获取bundler以安装特定平台的gem

时间:2017-09-06 14:21:39

标签: ruby bundler gemfile

我使用'fluent-logger'宝石登录我们的项目,需要'msgpack'。如果我运行bundle install,它会引入msgpack-1.1.0-x86-mingw32,在Windows上需要它时会引发异常。

kernel_require.rb:55:in `require': cannot load such file -- msgpack/msgpack (LoadError)

但是这个问题有一个解决方法,只需重新安装--platform=ruby这样的gem:

gem uninstall msgpack
gem install msgpack --platform=ruby

我尝试将此要求放入Gemfile中,如其他地方所示(无法找到链接atm),但它没有做任何事情(像以前一样安装msgpack-1.1.0-x86-mingw32):

gem 'msgpack', :platforms=>:ruby  

我在Windows 7上使用Ruby 1.9.3p551(和bundler v 1.14.6),以防万一。

修改

为了让所有想要的人自己尝试一下,我给出了一个示例来源。

的Gemfile:

source 'http://rubygems.org'

ruby '1.9.3'

gem 'fluent-logger'
gem 'msgpack', :platforms=>:ruby_19 
#for windows local dev msgpack needs to be installed with --platform=ruby

foo.rb

require 'fluent-logger'

logger= Fluent::Logger::FluentLogger.new
#logger.post('idx',{message:'it works'})
puts 'worked'

记录器不会创建有效的连接,但是如果它通过那个很好的连接 (唯一重要的是Gemfile没有引入正确版本的msgpack(在我的情况下是1.1.0-x86-mingw32而不是1.1.0))

1 个答案:

答案 0 :(得分:1)

here

从上面复制并粘贴:

  

除了rbx,jruby和mswin之外,您可以根据所有平台的平台和版本进一步限制。

     

要指定除平台之外的版本,请将没有分隔符的版本号附加到平台。例如,要指定gem只能在具有Ruby 2.3的平台上使用,请使用:

     

ruby​​_23

     

平台和支持的版本的完整列表包括:

     

红宝石   1.8,1.9,2.0,2.1,2.2,2.3,2.4,2.5

     

MRI   1.8,1.9,2.0,2.1,2.2,2.3,2.4,2.5

     

的mingw   1.8,1.9,2.0,2.1,2.2,2.3,2.4,2.5

     

x64_mingw   2.0,2.1,2.2,2.3,2.4,2.5   与组一样,您可以指定一个或多个平台:

     

gem" weakling",:platforms => :jruby的

     

gem" ruby​​-debug",:platforms => :mri_18

     

gem" nokogiri",:platforms => [:mri_18,:jruby]

所以在你的情况下,试试

gem 'msgpack', :platforms=>:ruby_19