【问题标题】:Get bundler to install gem for specific platform获取捆绑器以安装特定平台的 gem
【发布时间】:2018-02-15 02:11:43
【问题描述】:

我使用 'fluent-logger' gem 来登录我们的项目,它需要 '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),以防万一。

编辑

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

宝石文件:

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))

【问题讨论】:

    标签: ruby bundler gemfile


    【解决方案1】:

    http://bundler.io/man/gemfile.5.html

    从上面复制粘贴:

    除了 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

    核磁共振 1.8、1.9、2.0、2.1、2.2、2.3、2.4、2.5

    铭文 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 "弱化", :platforms => :jruby

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

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

    所以在你的情况下,试试

    gem 'msgpack', :platforms=>:ruby_19
    

    【讨论】:

    • 感谢手册页(我错过了那个),但不幸的是,它引入了与之前相同的 gem λ bundle show msgpack D:/Ruby193/lib/ruby/gems/1.9.1/gems/msgpack-1.1.0-x86-mingw32 并导致与之前相同的错误 D:/Ruby193/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in require': cannot load such文件 -- msgpack/msgpack (LoadError)`
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-02
    • 1970-01-01
    相关资源
    最近更新 更多