我的目标是让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
答案 0 :(得分:2)
我也在努力解决这个问题。我已经使用创建另一个组,然后将那些失败的组放入该组,然后gem install --without group
。有modify the gem install behavior based on platform 的方法,如果它是你自己的宝石,但如果你不控制代码,那么这是我唯一能够提出的。希望您正在处理的平台与您的开发,生产等组相对应。
我认为这确实是你的问题: Make bundler use different gems for different platforms