2013-07-24 45 views
2

我的目標是讓打包程序嘗試安裝每個gem,但如果gem無法安裝(通常是由於本機擴展),並且不需要gem它繼續嘗試安裝下一個。如果gem失敗並且不需要,允許打包程序繼續

我一直在努力這一段時間,這是因爲在Linux上試圖建立rb-fsevent with native extensionsgrowl_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 

回答

2

我這個也掙扎。我已經採取了創建另一個組,然後將那些失敗的組合放入該組,然後gem install --without group。如果它是您自己的寶石,有許多方法可以用modify the gem install behavior based on platform,但如果您不控制代碼,那麼這是我能夠想到的唯一一件事。希望你正在處理的平臺,符合您的組的研發,生產等

我覺得這真的是你的問題: Make bundler use different gems for different platforms

相關問題