2

这是我的 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 支持?我不想"~> 3.0.11"在我的 gemspec 上使用。

4

2 回答 2

0

我建议appraisal为此使用宝石。它允许您为项目生成多个 Gemfile,然后您可以像这样指定 gemfile:

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

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

于 2013-07-15T19:23:54.657 回答
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 施加任何限制 - 只要您打包并发布gem 同时使用更新的 Ruby。

于 2013-06-27T15:54:34.517 回答