Ruby on Railsチュートリアル(第7版)で学習中の際に、renderへのデプロイが失敗する件について、
私が遭遇したパターンの解決法について紹介します
環境
MacBook Air (Retina, 13-inch, 2018)
macOS バージョン12.1(21C52)
解決したエラー文①
bundler: failed to load command: rake (/opt/render/project/rubies/ruby-3.1.2/bin/rake)
Nov 27 02:00:27 PM /opt/render/project/.gems/gems/bundler-2.3.14/lib/bundler/definition.rb:434:in `validate_platforms!': Your bundle only supports platforms ["x86_64-darwin-21"] but your local platform is x86_64-linux. Add the current platform to the lockfile with (Bundler::ProductionError)
解決したエラー文②
ArgumentError: key must be 16 bytes
解決したエラー文③
! Unable to load application: LoadError: Error loading the 'sqlite3' Active Record adapter. Missing a gem it depends on? sqlite3 is not part of the bundle. Add it to your Gemfile.
そもそもエラー文ってどこで見れるの?
renderへのデプロイの場合、Dashboard→画面左の「Events」から
デプロイ状況の履歴が見れます。
そこで青字の「Deploy」を押していただければデプロイのlogが見れるかと思います。
そのlogの中からそれっぽい文を探してください(「error」で検索かけてもいいかもしれません)
それではエラー文を見ていきましょう
解決法
解決したエラー文①
bundler: failed to load command: rake (/opt/render/project/rubies/ruby-3.1.2/bin/rake)
Nov 27 02:00:27 PM /opt/render/project/.gems/gems/bundler-2.3.14/lib/bundler/definition.rb:434:in `validate_platforms!': Your bundle only supports platforms ["x86_64-darwin-21"] but your local platform is x86_64-linux. Add the current platform to the lockfile with (Bundler::ProductionError)
エラー文①に対しての解決法
これはエラー文通りのコマンドを打つだけでいいです。
# 下記のコマンドを打つ
$ bundle lock --add-platform x86_64-linux
解決したエラー文②
ArgumentError: key must be 16 bytes
エラー文②に対しての解決法
これはDashboradのEnvironmentのRAILS_MASTER_KEYのValueを
config/master.keyの中にあるkeyをコピペして入れてください
念のため確認のためのコマンドを入れておきます
# 下記のコマンドで表示されたkeyをコピペしてrenderのEnvironment Vulueに入れてください
$ cat config/master.key
==========
(出力例)
fbe9bp06e565bcaa8Hev1ff35108fb9d
==========
これで解決できなければ下記もご参照ください
Railsのmaster.keyで泣くほどハマった・・
解決したエラー文③
! Unable to load application: LoadError: Error loading the 'sqlite3' Active Record adapter. Missing a gem it depends on? sqlite3 is not part of the bundle. Add it to your Gemfile.
エラー文③に対しての解決法
config/database.ymlの中のadapterの設定値をpostgresqlに変更します
# database.yml(編集前)
$ cat config/database.yml
==========
(出力例)
default: &default
adapter: sqlite3
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
timeout: 5000
==========
上記のadapter: sqlite3
をエディターを使用して編集します
# database.yml(編集後)
$ cat config/database.yml
==========
(出力例)
default: &default
adapter: postgresql
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
timeout: 5000
==========
お疲れ様でした!
最後にGithubへのpushするのを忘れないようにしましょう!
参考にした記事
rails アプリを Renderにデプロイ時に ArgumentError: key must be 16 bytes が出る
Railsのmaster.keyで泣くほどハマった・・
herokuへデプロイ時のエラー
最後に
この記事が私のQiita初投稿&初めてのMarkdown記法です。
保険をかけているとかではなく、不備があればそれは単に僕の知識不足(お作法とかね)が原因なのでご指摘お願いいたします。
とりあえず完璧を目指すより完成を目指せの精神でつくったので、今後説明がわかりやすくなるように画像を入れたり文章を変える予定です。