はじめに
Railsチュートリアルの第1章の5でのRenderへのデプロイが失敗し解決するまでを記事にします。
RailsチュートリアルではAWS Cloud9を使用していますが、本記事はローカル環境からRailsチュートリアルを行っています。
Macのスペック
- MacBook Pro 13-inch 2020
- Chip: Apple M1
- OS: macOS Ventura13.0.1
- Memory: 16 GB
- Storage: 500GB
エラー確認
DashboardのEventsを確認
First deploy started for 9904a89: XXXXXXX
の上にDeploy failed...
ができているのでDeploy
部分をクリックし中身を確認する
最後の1番手前がBuild failed
になっている
Mar 26 04:10:55 PM ==> Build failed 😞
Mar 26 04:10:55 PM ==> Generating container image from build. This may take a few minutes...
エラー解決
エラー①
bundler: failed to load command: rake (/opt/render/project/rubies/ruby-3.2.1/bin/rake)
Mar 26 04:10:55 PM /opt/render/project/.gems/gems/bundler-2.4.9/lib/bundler/definition.rb:449:in `validate_platforms!': Your bundle only supports platforms ["arm64-darwin-22"] but your local platform is x86_64-linux. Add the current platform to the lockfile with (Bundler::ProductionError)
DeepLで翻訳すると
bundler: コマンドの読み込みに失敗しました: rake (/opt/render/project/rubies/ruby-3.2.1/bin/rake)
Mar 26 04:21:40 PM /opt/render/project/.gems/gems/bundler-2.4.9/lib/bundler/definition.rb:449:in `validate_platforms!
バンドルはプラットフォーム ["arm64-darwin-22"] しかサポートしていませんが、
ローカルプラットフォームは x86_64-linux です。(Bundler::ProductionError)で現在のプラットフォームをロックファイルに追加してください。
ロックファイル追加
エラーの指示通りにロックファイルをRailsプロジェクトのディレクトリに追加
bundle lock --add-platform x86_64-linux
再デプロイ
app/controllers/application_controller.rb
のコードを適当に変更しgit push
で再デプロイする
エラー再発
エラー②
Mar 26 04:29:42 PM Caused by:
Mar 26 04:29:42 PM ArgumentError: key must be 16 bytes
Railsプロジェクトのconfig/master.key
を確認
エラー②を解消するにはDashboardのEnvironmentのValueを正しく直す必要があります。
config/master.key
を開くと数字とアルファベットの羅列が1行だけあるので、それをコピーしてください
※私はVSCodeで直接ファイルを開いてコピーしました
master.key
をDashboardのEnvironmentのValueに貼りつけSave Change
を押下する
再々デプロイ
Environmentを更新するとデプロイが自動で走ります。
Eventsに以下のように表示されていればデプロイが成功しています。
割り当てられているURLにアクセスしてRailsプロジェクトが表示されていれば完了です。
参考記事
【Railsチュートリアル】 renderへのデプロイが失敗する (環境:macOS)
ほとんど全く同じ状況でした。
この記事なかったら解決できていなかったと思います。
ありがとうございます。