以下是我的gemspec的相关部分:
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"
Travis因为尝试安装ActiveSupport 4.0而无法使用ruby 1.8.7,但Rails 4不支持ruby 1.8.7。当用户尝试使用gem时,我担心这可能是一个问题,即使它可能与1.8.7兼容。
如何解决这个问题,同时保持对Rails 4的支持?我不想在我的gemspec上使用"~> 3.0.11"
。
答案 0 :(得分:0)
我建议将gemspec的内容更改为:
if RUBY_VERSION < "1.9"
spec.add_dependency "activesupport", "~> 3.0.11"
else
spec.add_dependency "activesupport", "> 3.0.11"
end
从技术上讲,它确实使用了您不想要的语法,但它以受约束的方式实现,并且不应对用户产生负面影响。事实上,只影响gem的构建过程,并且会使Travis使用受限制的依赖版本(无论如何最终用户必须),而不会放置任何一般来说对gem的约束 - 只要你在使用更新的Ruby时打包并释放gem。
答案 1 :(得分:0)
我建议使用appraisal
gem。它允许您为项目生成多个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
这将生成五个版本:
希望这样的事情会有所帮助。