Dcokerコンテナ上に、Railsアプリを組んでCircleciを使って自動デプロイまでを一気にやろうとしたら
迷宮入りしたので、原点回帰しようと思います。
herokuへデプロイする練習
自分の環境
Ruby : 2.6.6
rails : 6.0.3.2
git : 2.23.0
heroku-cli : 7.42.13 darwin-x64 node-v12.16.2
Railsアプリを用意する
$ rails new heroku_app #今回はheroku_appというものを用意
$ cd heroku_app
$ rails g scaffold blog title:string body:text
$ rake db:migrate
$ rails s
Railsアプリをデプロイする準備
- config/routes.rbの設定
- Gemfileの設定
- config/datebase.ymlの設定
- config/enviroments/production.rbの設定
config/routes.rbの設定
Rails.application.routes.draw do
resources :blogs
root 'blogs#index' #トップページをblogsコントローラのindexアクションに設定
end
Gemfileの設定
今回はherokuの無料枠で使えるpostgreSQLを使います。
ちなみにMySQLは有料枠になります。
※pg:production:本番環境のherokuは、postgreSQLを使うよって意味になります。
group :development, :test do
gem 'sqlite3' #do ~ end内部に追加。他のgemは残してください。
end
group :production do
gem 'pg'
end
さっき更新したGemfileの変更をbundle installする。
$ bundle install --without production
※ちなみに、このオプションは一度打ち込めば、アプリ内部の/bundle/configというところに書き込まれるため、
それ以降は--without producitonを打たなくても本番環境以外のgemをインストールしてくれるようになります。
その他のbundle install時のオプションは全てここに書き込まれます。
このようになっていたらOK
BUNDLE_WITHOUT: "production"
cinfig/database.ymlの設定
実際にデータベースと接続する設定をします。
production:
# 半角スペース2個分の空白を開ける
<<: *default
adapter: postgresql
encoding: unicode
pool: 5
adapter: postgresql - postgreSQLのデータベースに接続します。
encoding: unicode - unicodeという文字コードを使用します。
pool: 5 - DBに接続できる上限の数を決めます。今回は5。
config/environments/production.rbの設定
本番環境での動的な画像の表示をONにする。
# デフォルトでfalseとなっている以下の箇所をtrueに変更
config.assets.compile = true
herokuへデプロイの準備を行う
git経由でアップロードをします。
$ git init #このフォルダをgitと紐付けます。(最初の一回だけ)
変更したら毎回やるやつ
$git add -A #保存するファイルの選択。-Aは全部
$git commit -m "first commit" #addしたファイルの保存の確定
herokuへ登録する
$heroku login
$heroku create アプリ名 #自由にどーぞ、空欄でも可。ちなみにすでに誰かが作って存在する場合はエラーが出るので、別名をトライ。
$git push heroku master
本番環境でのマイグレーション
$heroku run rails db:migrate
終わり!
ちなみにheroku runをつけるとheroku上でrailsコマンドを打つことができます。
参考にさせていただいた記事通りに行えば、素のrailsをherokuにデプロイすることは容易にできました。
元記事の説明が大変丁寧でわかりやすく、感謝しています。
参考記事:https://qiita.com/kazukimatsumoto/items/a0daa7281a3948701c39