【问题标题】:Travis fails now Rails 4 has been released现在 Travis 失败了 Rails 4 已经发布
【发布时间】:2013-06-27 15:37:20
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

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

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

    从技术上讲,这确实使用了您不想要的语法,但它以一种受限制的方式这样做,并且不应对用户产生不利影响。事实上,它会影响 gem 的构建过程,并且会让 Travis 使用受限版本的依赖项(最终用户无论如何都必须这样做)而不放置 any 对 gem 的一般限制 - 前提是您在使用更新的 Ruby 时打包和发布 gem。

    【讨论】:

      【解决方案2】:

      我建议为此使用appraisal gem。它允许您为项目生成多个 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

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

      【讨论】:

        猜你喜欢
        • 2018-10-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-01-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多