Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How can I resolve "Your bundle only supports platforms ["x86-mingw32"] but your local platforms are ["ruby", "x86_64-linux"]"

I'm building a rails site on a Windows machine but when I check in my Gemfile.lock I get the following error on my Travis builds:

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

lists

Here is the full log: https://travis-ci.org/bikebike/BikeBike/builds/222395810#L654

I looked at my Gemfile.lock and it states:

PLATFORMS
  x86-mingw32

Which appears to be part of the issue. I've tried putting any windows specific gems in a platforms block:

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

  group :test do
    gem 'wdm', '>= 0.1.0'
    gem 'win32console', require: false
  end
end

But the Gemfile.lock looks the same.

Here is my full Gemfile and Gemfile.lock.

I can temporarily get around the issue by removing the Gemfile.lock file from git but this is not best practice. Is there anyway that I can commit my Gemfile.lock file and continue to develop on my Windows machine?

like image 680
Godwin Avatar asked Apr 15 '17 18:04

Godwin


People also ask

What does bundle lock do?

If you want your bundle to support platforms other than the one you're running locally, you can run bundle lock --add-platform PLATFORM to add PLATFORM to the lockfile, force bundler to re-resolve and consider the new platform when picking gems, all without needing to have a machine that matches PLATFORM handy to ...

What is a Gemfile?

A Gemfile is a file that is created to describe the gem dependencies required to run a Ruby program. A Gemfile should always be placed in the root of the project directory.


1 Answers

Run the following two commands on the command line:

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

This will add the two platforms in Gemfile.lock

I had the same error when deploying to google cloud. But after running these two commands ruby and x86_64-linux were added and the issue was resolved.

like image 68
taz Avatar answered Sep 20 '22 12:09

taz