本記事は、以下の記事を自分用にまとめ直したものです。
【初心者向け】railsアプリをherokuを使って確実にデプロイする方法【決定版】
・Gitのインストール、Commit
・Heroku CLIのインストール
はできている前提で話を進めます。詳しい内容が知りたい方は、上記の記事をご参照ください。
##1.Railsでアプリを作成
各自アプリを作成します。rootにアクセスされた時にルーティングを忘れずに設定してください。
##2.Gemfileの設定
開発環境(ローカル)、本番環境(Heroku)のそれぞれで利用するデータベースの情報をGemfileに記述します。
まず12行目付近のgem 'sqlite3'
をコメントアウトします。
# gem 'sqlite3'
次に40行目付近group :development, :test do ~~ end
内に、開発環境、テスト環境用のデータベースに関するGemを追加します。
group :development, :test do
・
・
gem 'sqlite3'
・
・
end
そして、group :development, :test do
のかたまりの下に、本番環境用のデータベースに関するGemを追加します。
group :production do
gem 'pg'
end
最後に、変更したGemfileを反映させます。
$bundle install --without production
--without production
というオプションを加えることで、group :produciton do~end内以外のgemだけを自分のパソコンにインストールすることができます。
このオプションは一度打ち込めば、アプリ内部の/bundle/config
というところに書き込まれるため、2回目以降はbundle install
だけでOKです。その他のbundle install時のオプションも全てここに書き込まれます。
##3.config/datebase.ymlの設定
ファイル下部production:
の項目を以下のように編集します。
ymlファイルはインデントで構造を判別するので気をつけましょう。
production:
<<: *default
adapter: postgresql
encoding: unicode
pool: 5
adapter
:接続するデータベースの種類
encoding
:使用する文字コード
pool
:DBに接続できる上限数?よくわかっていないのでいつか調べようと思います。
##4.config/environments/production.rbの設定
Sassなどの静的ファイルを、手動でプリコンパイルしなくても怒られないようにするために、動的プリコンパイルを有効にします。
31行目くらいにあるconfig.assets.compile
をtrue
に変更しましょう。
config.assets.compile = true
##5.Herokuにデプロイ
###ログイン
コマンドラインからHerokuにログインします。
$ heroku login
以下のメッセージが表示されるので適当なキーをクリック。
heroku: Press any key to open up the browser to login or q to exit:
するとブラウザが開き、Herokuのページに遷移します。ログイン完了。コマンドラインに戻ってください
的な英語が表示されているので、指示通りコマンドラインに戻りましょう。
###Herokuアプリを作成
heroku create {アプリ名}
でHerokuアプリを作成します。
アプリ名は一意でなければいけないので、他の人がすでに使っている名前だとエラーが表示されます。
またアプリ名がドメインの一部になるので、ドメインに使えない文字列は利用できません。
$ heroku create d0ne1s-todo-app
###デプロイ
$ git push heroku master
###本番環境(Heroku)でマイグレーション
デプロイをしたマイグレーションファイルを元に、本番環境用のデータベースを作成します。
$ heroku run rails db:migrate
これで全てのデプロイ作業が完了です。
##アプリに修正を加えた時の操作
変更したソースをデプロイ
$ git push heroku master
データベースの構造を変更した時
$ heroku run rails db:migrate