我正在开发一个适用于Ruby 1.9.3的gem,但是安装最新的Gemfile只能在Ruby 2.2上运行。有没有办法根据Ruby版本分离依赖项?
我过去曾见过这种做法:
pry_debugger = RUBY_VERSION < '2.0.0' ? 'pry-debugger' : 'pry-byebug'
spec.add_development_dependency pry_debugger
或者我应该考虑支持一个Ruby版本(让我们说2.0)并找到支持的宝石?什么是查找gems在我的本地Ruby版本上工作的最简单方法?
答案 0 :(得分:2)
您展示的逻辑将适用于开发依赖项,因为它将在bundle安装时进行评估。
它不适用于运行时依赖项,因为逻辑将在gem-build时评估,而不是在gem在另一个环境中运行时。 RubyGems没有为您提供基于运行时环境指定不同gem的方法,因此您可以支持的唯一方法是使用不同的gemspecs发布两个不同命名的gem版本。
就个人而言,我没有看到将开发依赖项放在.gemspec中的重点,所以我总是将它们添加到我的Gemfile中,并仅为运行时依赖项保留gemspec。 这更好地区分了关注点并清楚地表明可以在Gemfile中使用gem选择逻辑,但不能在gemspec中使用。