【问题标题】:How to do an "OR" when requiring a Gem version需要 Gem 版本时如何执行“OR”
【发布时间】:2012-09-16 13:53:38
【问题描述】:

目前我有一个 Gemspec,它需要 Rails > 3.1 的特定版本的 Rails 3.x:

Gem::Specification.new do |s|
  # (...)
  s.add_dependency "railties", "~> 3.1"
  # (...)
end

我希望更新此声明以要求 ~> 3.1~> 4.0.0。我已经试过了:

  • ~> 3.1, ~> 4.0.0
  • ~> 3.1 OR ~> 4.0.0
  • ~> 3.1 || ~> 4.0.0
  • ~> 3.1 ~> 4.0.0

没有一个有效。 当前的 RubyGems 版本可以吗?

目前我使用的是 > 3.1,但真正的问题是这是否可能。

【问题讨论】:

  • 这是一个有趣的要求。让我们看看是否会出现解决方案。
  • 要求其中之一的条件是什么?
  • @TonyHopkinson 我知道我的 Gem 兼容 ~> 3.1 (3.1.x, 3.2.x) 并兼容 ~> 4.0.0 (4.0.x),但我不确定将与 Rails 4.1.x 一起使用。

标签: ruby rubygems gemspecs


【解决方案1】:

由于您使用的是~>,似乎您愿意使用 3.1 之后的任何 gem 版本,即任何 3.x 或任何 4.0.x,但不是 4.x,其中x 大于 1。

如果这是您的意图,那么根据the rubygems guide,您需要使用如下模式:

spec.add_dependency 'library', ['>= 3.1', '< 4.1']

我认为这可能是您需要添加括号。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-17
    • 2016-04-06
    • 1970-01-01
    • 2018-08-29
    相关资源
    最近更新 更多