如何解决"您的软件包仅支持平台["x86-mingw32"],但您的本地平台是["ruby","x86_64-linux"]"

God*_*win 9 ruby bundler gemfile travis-ci gemfile.lock

我正在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
Run Code Online (Sandbox Code Playgroud)

名单

这是完整的日志:https://travis-ci.org/bikebike/BikeBike/builds/222395810#L654

我查看了我的Gemfile.lock并说明:

PLATFORMS
  x86-mingw32
Run Code Online (Sandbox Code Playgroud)

这似乎是问题的一部分.我已经尝试将任何特定于Windows的宝石放在一个platforms块中:

platforms 'mswin', 'mingw', 'mswin64', 'x64_mingw' do
  gem 'tzinfo-data'

  group :test do
    gem 'wdm', '>= 0.1.0'
    gem 'win32console', require: false
  end
end
Run Code Online (Sandbox Code Playgroud)

但是Gemfile.lock看起来是一样的.

这是我的完整GemfileGemfile.lock.

我可以通过从git中删除Gemfile.lock文件来暂时解决这个问题,但这不是最佳做法.无论如何,我可以提交我的Gemfile.lock文件并继续在我的Windows机器上开发?

小智 16

在命令行上运行以下两个命令:

bundle lock --add-platform ruby
bundle lock --add-platform x86_64-linux
Run Code Online (Sandbox Code Playgroud)

这将在Gemfile.lock中添加两个平台

部署到谷歌云时我遇到了同样的错误.但是在运行这两个命令之后,添加了ruby和x86_64-linux并解决了问题.


小智 8

对于 Ruby 2.5.1,我在 VPS 上解决了这个问题,方法是将错误消息中提到的平台添加到以下平台列表部分gemfile.lock

PLATFORMS
  x86-mingw32
  ruby 
  x86_64-linux
Run Code Online (Sandbox Code Playgroud)

只有这样,才能从应用程序的目录运行以下命令(如taz 的答案中所示)

bundle lock --add-platform ruby
bundle lock --add-platform x86_64-linux
Run Code Online (Sandbox Code Playgroud)

导致成功。