「バンドルはプラットフォーム [“x86-mingw32”] のみをサポートしていますが、ローカル プラットフォームは [“ruby”、“x86_64-linux”] です」を解決するにはどうすればよいですか?
概要
Windows マシン上で Rails サイトを構築していますが、Gemfile.lock をチェックインすると、Travis ビルドで次のエラーが発生します。
Your bundle only supports platforms ["x86-mingw32"] but your local platforms are ["ruby", "x86_64-linux"], and there's no compatible match between those two
リスト
完全なログは次のとおりです: https://travis-ci.org/bikebike/BikeBike/builds/222395810#L654
Gemfile.lock を見てみると、次のように書かれていました。
PLATFORMS
x86-mingw32
これは問題の一部であるようです。 Windows 固有の gem をプラットフォーム ブロックに入れてみました。
platforms 'mswin', 'mingw', 'mswin64', 'x64_mingw' do
gem 'tzinfo-data'
group :test do
gem 'wdm', '>= 0.1.0'
gem 'win32console', require: false
end
end
ただし、Gemfile.lock は同じように見えます。
これが私の完全な Gemfile と Gemfile.lock です。
git から Gemfile.lock ファイルを削除することでこの問題を一時的に回避できますが、これはベスト プラクティスではありません。 Gemfile.lock ファイルをコミットして、Windows マシンで開発を続けることはできますか?
解決策
コマンドラインで次の 2 つのコマンドを実行します。
bundle lock --add-platform ruby
bundle lock --add-platform x86_64-linux
これにより、Gemfile.lock に 2 つのプラットフォームが追加されます。
Google Cloudにデプロイするときに同じエラーが発生しました。しかし、これら 2 つのコマンドを実行した後、ruby と x86_64-linux が追加され、問題は解決されました。