Techioz Blog

「バンドルはプラットフォーム [“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 が追加され、問題は解決されました。