Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 让bundler为特定平台安装gem_Ruby_Bundler_Gemfile - Fatal编程技术网

Ruby 让bundler为特定平台安装gem

Ruby 让bundler为特定平台安装gem,ruby,bundler,gemfile,Ruby,Bundler,Gemfile,我使用“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

我使用“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
我尝试将此要求放入GEM文件,如其他地方所示(找不到链接atm),但它没有做任何事情(与以前一样安装
msgpack-1.1.0-x86-mingw32
):

我在Windows7上使用Ruby 1.9.3p551(和bundler V1.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

从上面复制并粘贴:

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

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

鲁比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“weakling”,: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\u ruby/1.9.1/rubygems/custom\u require.rb:36:in
require]:无法加载这样的文件--msgpack/msgpack/msgpack(加载错误)`
gem 'msgpack', :platforms=>:ruby_19