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

时间:2017-04-15 18:22:32

标签: ruby bundler travis-ci gemfile 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

列表

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

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

PLATFORMS
  x86-mingw32

这似乎是问题的一部分。我尝试将任何特定于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

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

这是我的完整GemfileGemfile.lock

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

2 个答案:

答案 0 :(得分:14)

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

bundle lock --add-platform ruby
bundle lock --add-platform x86_64-linux

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

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

答案 1 :(得分:0)

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

PLATFORMS
  x86-mingw32
  ruby 
  x86_64-linux

然后,仅在应用目录中运行以下命令(如taz's answer中所示)

bundle lock --add-platform ruby
bundle lock --add-platform x86_64-linux

通往成功。