Travis失败现在Rails 4已经发布

时间:2013-06-27 15:37:21

标签: ruby gem activesupport travis-ci ruby-1.8.7

以下是我的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"

2 个答案:

答案 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

这将生成五个版本:

  • 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

希望这样的事情会有所帮助。