如果gem失败并且不需要,则允许bundler继续

时间:2013-07-24 18:23:27

标签: ruby bundler

我的目标是让bundler尝试安装每个gem,但是如果gem无法安装(通常是由于本机扩展),并且不需要gem,那么它会继续尝试安装下一个。

我一直在努力解决这个问题,这是因为我试图在linux上为rb-fsevent with native extensions构建growl_notify。任何帮助将不胜感激。

的Gemfile:

source 'http://rubygems.org'

def darwin_only(require_as)
  RUBY_PLATFORM.include?('darwin') && require_as
end

def linux_only(require_as)
  RUBY_PLATFORM.include?('linux') && require_as
end

gem 'sinatra'
gem 'httparty', '~>0.8.1'

group :development do
  gem 'shotgun'
  gem 'heroku'

  gem 'jasmine-headless-webkit'
  gem 'guard-jasmine-headless-webkit'
  gem 'growl_notify', require: darwin_only('growl_notify')
  gem 'rb-fsevent',   require: darwin_only('rb-fsevent') 
  gem 'rb-inotify',   require: linux_only('rb-inotify')
  gem 'libnotify',    require: linux_only('libnotify')
end

1 个答案:

答案 0 :(得分:2)

我也在努力解决这个问题。我已经使用创建另一个组,然后将那些失败的组放入该组,然后gem install --without group。有modify the gem install behavior based on platform 的方法,如果它是你自己的宝石,但如果你不控制代码,那么这是我唯一能够提出的。希望您正在处理的平台与您的开发,生产等组相对应。

我认为这确实是你的问题: Make bundler use different gems for different platforms