Ruby Travis失败,Rails 4已经发布

Ruby Travis失败,Rails 4已经发布,ruby,gem,activesupport,travis-ci,ruby-1.8.7,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.

以下是我的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在ruby 1.8.7上失败了,因为它试图安装ActiveSupport 4.0,但Rails 4不支持ruby 1.8.7。我担心当用户尝试使用gem时,这可能是一个问题,即使它可能与1.8.7兼容


如何在保持Rails 4支持的同时修复此问题?我不想在我的gemspec上使用
“~>3.0.11”

我建议您将gemspec的内容更改为:

  if RUBY_VERSION < "1.9"
    spec.add_dependency "activesupport", "~> 3.0.11"
  else
    spec.add_dependency "activesupport", "> 3.0.11"
  end
如果RUBY_版本<“1.9”
规范添加依赖项“activesupport”,“~>3.0.11”
其他的
规范添加依赖项“activesupport”,“>3.0.11”
结束
从技术上讲,这确实使用了您不想要的语法,但它是以一种受限的方式使用的,并且不应该对用户产生负面影响。事实上,它只会影响gem的构建过程,并且会使Travis使用受限制版本的依赖项(最终用户无论如何都必须这样做),而不会对gem施加任何限制-前提是您在使用较新的Ruby时打包并发布gem。

我建议为此使用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
希望这样能有所帮助