Techioz Blog

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"

その後、デプロイを繰り返します (新しいコミットをブランチにプッシュします)