Rails アプリを render.com にデプロイするときのエラー: 「バンドルはプラットフォーム [“x86_64-darwin-22”] のみをサポートしていますが、ローカル プラットフォームは x86_64-linux です」
概要
render.com にデプロイしようとするとエラーが発生し、エラーを見ると次のメッセージが表示されました
==> Running build command 'bundle install; bundle exec rake assets:precompile; bundle exec rake assets:clean;'...
Your bundle only supports platforms ["x86_64-darwin-22"] but your local platform is x86_64-linux.
Add the current platform to the lockfile with `bundle lock --add-platform x86_64-linux` and try again.
調査 まずは x86_64-darwin-22 とは何でしょうか?それで調べてみたところ、次のことが分かりました。
そろそろMacをAppleシリコン製に買い替えたいのですが…
ただし、ローカル プラットフォームは x86_64-linux です。現在のプラットフォームをlockfileに追加する そのため、Gemfile.lockに自分の環境のプラットフォームを追加する必要があるようです。
解決 ローカル環境のbundle lockコマンドを使用してGemfile.lockを更新します。 次のコマンドを実行します
$ bundle lock --add-platform x86_64-linux
実行結果
x86_64-linux added!
Gemfile.lock:
+ nokogiri (1.13.9-x86_64-linux)
+ racc (~> 1.4)
PLATFORMS
x86_64-darwin-22
+ x86_64-linux
解決策
同様の問題があります。これは、render.com ではなく Heroku に関するものですが、これも機能するはずです
bundle lock --add-platform x86_64-linux --add-platform ruby
bundle install
git add Gemfile.lock
git commit -m "Bundler fix"
その後、デプロイを繰り返します (新しいコミットをブランチにプッシュします)