Herokuを用いたデプロイの手順

新年明けましておめでとうございます!!🍊

2021年は朝活(5:45〜)をします!(周囲に宣言してしまえばきっと継続できる!)

 

さて、本題です!

今回はHerokuを用いたデプロイについて、手順をまとめてみました!

(Herokuアカウントは登録済み、Heroku CLIをインストール済みとする)

 

では早速いきましょう!!

 

手順1:リポジトリの作成

   ※ masterブランチへcommitを行っておく!

 

手順2:Herokuへログイン

   下記を実行後、メールアドレス、パスワードを入力する

% heroku login --interactive

 

手順3:Heroku上へアプリケーションを作成

   アプリケーションのディレクトリに移動し、以下を実行

% heroku create アプリ名

 

手順4:MySQLを使用できるように設定

   HerokuはデフォルトでPostgreSQLというデータベースになっているため

   ClearDBアドオンを追加(以下を実行)することでMySQLが使用できる

% heroku addons:add cleardb

 

手順5:Mysql2への対応

   railsにおいて、mysql2というgemを使用しているため

# Use mysql as the database for Active Record
gem 'mysql2', '>= 0.4.4'

手順5−1:ClearDBデータベースのURLを変数に格納

% heroku_cleardb=`heroku config:get CLEARDB_DATABASE_URL`

手順5−2:変数を用いてHerokuのデータベースURLを再設定

% heroku config:set DATABASE_URL=mysql2${heroku_cleardb:5}

 

手順6:master keyを環境変数として設定

% heroku config:set RAILS_MASTER_KEY=`cat config/master.key`

    これでmaster keyの情報を外部に漏らさず、Heroku上でもcredentials.yml.enc

    を扱える

 

手順7:Herokuアプリケーションへ情報をpush

   Herokuへコミットをプッシュすることで、アプリケーションの情報を追加

% git push heroku master

 

手順8:Heroku上でマイグレーションの実行

   heroku run を用いることで、Heroku上でコマンドが実行できる

% heroku run rails db:migrate

 

手順9:Herokuにデプロイされたアプリケーションの情報を確認

% heroku apps:info

 

以上の手順で、アプリケーションをデプロイができます!👏

ちなみにデプロイ済みのアプリケーションに変更・修正を加えた場合は、

変更をcommitし、マスターブランチへマージを行い、Herokuへpushします!

テーブルの変更を行った場合はマイグレーションをお忘れなく!

 

また、何度か出てきたheroku config コマンドについて簡単に補足します!

heroku config                  環境変数の一覧を確認

heroku config: get 環境変数名           環境変数の取得

heroku config: set 環境変数名=セットしたい値     環境変数の追加・変更

heroku config: unset 環境変数名          環境変数の削除

 

自分でまとめてみると、初めて行った時より理解度が深まりました!

改めてアウトプットや復習の重要さが分かります👀

 

ここまで読んでくださりありがとうございました!✌🏻

誤りがあれば教えてください!

引き続きよろしくお願いします!!

 

【プログラミング】form_withについて

こんにちは!

今週は自分が理解に苦しんだform_withについて書いていきます!

 

%= form_with model: [@room, @message], class: 'form', local: true do |f| %>
こんな感じでmodelオプションに2つのインスタンス変数が入っているパターン。
自分が持った疑問は、なぜ2つの値が指定されているの??でした。
 

結論、

@roomと@messageは、formで入力した内容が

どこのモデルと紐づくのかを示しているから。(、、、と自分なりに解釈)

@messageは空のインスタンスのため、createアクションの発火にも一役買っている!

@roomは、既にidを取得しているため、@messageが紐づくべきレコードを示してくれている!

 

ちなみにモデル間では下記のアソシエーションが組まれている。

roomモデル        has_many: messages

messageモデル belongs_to: room belongs_to: user

 

せっかくなので保存までの流れも自分なりの解釈で書いていきます!

formで送られる内容(パラメーター)はこうなっている。(一部省略)

parameters: {"messages"=> { "content"  :  "入力した値"   }   "room_id"  =>  "●"}
このパラメーターがmessageコントローラーのcreateアクションへ運ばれる。
 
def create
@room = Room.find(params[:room_id])
@message = @room.messages.new(params_message)
if @message.save
redirect_to action: :index
else
@messages = @room.messages.includes(:user)
render action: :index
end
private

def params_message
params.require(:message).permit(:content, :image).merge(user_id: current_user.id)
end

パラメーターの中のroom_idはparamsで受け取られ,

入力した値は、params_messageメソッド(ストロングパラメーター)を通して、@messageに代入される。

そしてsaveメソッドでデータベースに保存される!

 

こんな感じの流れで動いている、、、はず!!

解釈が間違えていたら教えてください😹

学習を開始して3週間、段々と内容が複雑に感じてきました、、、が負けません!

 

ここまで読んでくださりありがとうございました!!!1

 

 

ブログラミング学習を始めて2週間で学んだこと

オンラインでプログラミングを学習を開始して2週間が経ちました!

アウトプットが大事!と教わり、不慣れですが所感をまとめさせていただきます😃

 

この期間、自分の力になったこととして大きく2点あります。✌🏻

 

1:プログラミングスキル  (...あたりまえ)

(HTML、CSSRubyRuby on railsLinuxコマンド Git、GitHub、テストコード)

2:日々の学習習慣

(集中力を高める、学習時間の確保、自分で調べる癖)

 

まず1つ目に関しては、思っている以上に多くスキルが身についたと思います。

もちろんまだ独り立ちはできておらず、メンターの方々や同期の受講生の皆さん、

分かりやすい学習教材の力があり、学習を進められています。

初めは難しいと感じることでも、やっていくうちに本質を理解できて、

自分がイメージしている挙動が実際にPCの画面で実装できた時は、なんとも言えない

感覚があります。一人で「よっしゃ!」と喜んでいます。

 

そして2つ目の学習週間。今回はこのことが書きたくて記事を書いています。

もともと勉強が好きでも得意でもない自分が、今では毎日休憩を除いて7時間以上

勉強することができています。もちろん集中力は持続しています!

その要因として、個人的に大きいと感じているのは、ポモドーロテクニックです。

簡単に説明すると、

人が持続できると言われている集中時間(25分〜60分)を決めて、勉強する。(タイマーなどで図るといい!)時間が来たらどんなに中途半端な状態でも休憩する。

以上です。

非常に簡単ですがめちゃくちゃ効果的です!ざっくり原理を説明すると、中途半端に中断したもやもや感が、脳へのいい刺激となり、学習を再開した時に脳が情報を整理しようとするからです。

 

まだまだプログラミング初学者で、未熟ですが、こういった知識を増やして

効率よく学習を進めていこうと思います。

ここまで目を通してくださりありがとうございました。

これからも週1発信続けていきます!よろしくお願いします!😁

ご挨拶 〜ブログ開始!〜

おはようございます🐥

 

今日からブログを始めます!

更新は、毎週日曜日を予定しています✏️

(軌道に乗れば頻度をあげていきます!)

 

内容は大きく2つです。

💻プログラミングについて(学習の成果、学習方法の振り返り、話題のトピック)

📚読書について(最近読んだ本)

 

よろしくお願いします👀