我的目标是让bundler尝试安装每个gem,但是如果gem安装失败(通常是由于本机扩展),并且gem不是必需的,那么它会继续尝试安装下一个gem。
我已经在这个问题上挣扎了一段时间,这是因为我试图在linux上为growl_notify构建rb-fsevent with native extensions。任何帮助都将不胜感激。
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发布于 2013-07-25 02:35:34
我也为此而苦苦挣扎。我求助于创建另一个组,并将那些失败的人放入该组,然后是gem install --without group。如果它是你自己的gem,有很多方法可以modify the gem install behavior based on platform ,但是如果你不能控制代码,那么这是我唯一能想到的方法。希望您正在处理的平台与您的开发、生产等团队相对应。
我认为这真的是你的问题:Make bundler use different gems for different platforms
https://stackoverflow.com/questions/17841929
复制相似问题