2013-06-27 95 views
2

這裏是我的gemspec的相關部分:特拉維斯失敗現在軌道4已經發布

spec.add_development_dependency "bundler", "~> 1.3" 
spec.add_development_dependency "rake" 
spec.add_development_dependency "rspec", "~> 2.13.0" 
spec.add_dependency "addressable" 
spec.add_dependency "activesupport", "> 3.0.11" 

特拉維斯失敗對Ruby 1.8.7,因爲它試圖安裝的ActiveSupport 4.0,但軌道4不支持紅寶石1.8 0.7。恐怕這可能是用戶嘗試使用gem的問題,儘管它可能與1.8.7兼容。

我怎麼能解決這個問題,同時也保持軌道4支持?我不想在我的gemspec上使用"~> 3.0.11"

回答

0

我建議改變你gemspec的內容是這樣的:

if RUBY_VERSION < "1.9" 
    spec.add_dependency "activesupport", "~> 3.0.11" 
    else 
    spec.add_dependency "activesupport", "> 3.0.11" 
    end 

技術上講,這個使用你不想要的語法,但它在一個受限的方式這樣做,而不應不利影響用戶。事實上,它只有影響寶石的構建過程,並會特拉維斯使用依賴的限制版本(作爲最終用戶將不得不反正)沒有將任何限制對一般的寶石 - 只要你打包並釋放寶石,同時使用更新的Ruby。

0

我建議使用appraisal寶石這一點。它可以讓你生成項目的多個Gemfiles,然後你可以指定這樣的gemfiles:

language: ruby 
rvm: 
    - 1.9.3 
    - 2.0.0 
gemfiles: 
    - gemfile/3.0.gemfile 
    - gemfile/4.0.gemfile 
matrix: 
    include: 
    - rvm: 1.8.7 
     gemfile: gemfile/3.0.gemfile 

這將生成五個構建:

  • 1.9.3 + 3.0
  • 2.0.0 + 3.0
  • 1.9.3 + 4.0
  • 2.0.0 + 4.0
  • 1.8.7 + 3.0

希望像這樣的幫助。

相關問題