Rails herokuでデプロイ.
herokuでデプロイ.
デプロイ時に参考にした記事.
Railsアプリの事前準備.
ルーティングの設定.
rootでトップページになにか設定しておく.
Rails.application.routes.draw do
root to: 'top#index' #ここ設定.
resources :posts do
resources :comments, only: %i[create], shallow: true
end
resource :profile
#~~略~~
end
Gemfile設定.
Gemfile
# sqlite3
# 上記をコメントアウトする.
group :development, :test do
gem 'sqlite3' # 開発環境用で使用できるようこちらに記述.
#~~略~~
end
group :production do
gem 'pg' # ここ追加.
end
herokuは本番環境がPostgreSQLが初期設定なので合わせます.
ターミナルで以下を実行.
$bundle install --without production
本番用のgem(この場合はpg gem)をローカルの環境にはインストールしないようにするため.
bundle installに特殊なフラグ「--without production」を追加する.
引用:RailsToutorial
config/datebase.yml設定.
production:
<<: *default
adapter: postgresql
encoding: unicode
pool: 5
adapter: postgresql ## postgreSQLのデータベースに接続する.
encoding: unicode ## 文字コードの設定.今回はunicode
pool: 5 ## DBに接続できる上限の数の設定.
config/environments/production.rbの設定
config/environments/production.rb
config.assets.compile = true
# falseからtrueへ変更する.
Railsでは本番環境で動的な画像の表示がデフォルトでオフなので,読み込めるように設定する.
ここまで来たら.さっそくデプロイしていきます.
前提条件.
・gitの設定済み
・githubの登録済み
・herokuの登録済み.
まだの方は以下から進めてみてください.
herokuにデプロイ.
$ git push heroku master
当たったエラー.
Failed to install gems via Bundler.
意味はBundler経由でgemのインストールが失敗した.という意味です.
Bundlerのバージョンがherokuの適してないバージョンだと出るエラーみたいです.
自身のバージョンを確認します.
$ bundler -v
Bundler version 2.2.20
Bundlerをherokuが適用されるバージョン2.1.4にバージョンダウンしていきます.
$ gem install bundler -v 2.1.4
$ bundle _2.1.4_ install
$ bundler -v
Bundler version 2.1.4
これでバージョンダウン完了です.
Precompiling assets failed.
意味はアセットのプリコンパイルに失敗した.とのことです.
Uglifierは標準ではES5の文法規格までしかサポートしていない.
ES5ではテンプレートリテラル(`)に対応していないみたいです.
Railsで使うときは以下のように修正.
config/environments/production.rb
config.assets.js_compressor = :uglifier
# 上記のコードを以下のように修正する.
config.assets.js_compressor = Uglifier.new(harmony: true)
今回は,コメントアウトで対応.
config/environments/production.rb
config.assets.js_compressor = :uglifier
# 今回は必要がないので以下のようにコメントアウトする.
# config.assets.js_compressor = :uglifier
上記のエラー対応で以下をもう一度実行.
$ git push heroku master
remote: Verifying deploy... done.
To https://git.heroku.com/....git
…. master -> master
デプロイができました!!
herokuでマイグレーション.
$ heroku run rails db:migrate
PG::UndefinedTable: ERROR: relation "users" does not exist
usersテーブルより先にpostsテーブルが作成されて発生しているエラーみたいです.
(アソシエーションの設定をしているので…)
上記の記事を参考に読み込まれるマイグレーションファイルの順番を修正します.
$ git add .
$ git commit -m "fix:migration"
$ git push heroku master
もう一度.マイグレーションを実行.
$ heroku run rails db:migrate
これでherokuでのデプロイは終了です.
発行されたURLにアクセスできるようになります!!
この記事が気に入ったらサポートをしてみませんか?