基于Ruby版本管理gem依赖项

时间:2016-09-06 10:09:34

标签: ruby-on-rails ruby rubygems

我正在开发一个适用于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版本上工作的最简单方法?

1 个答案:

答案 0 :(得分:2)

您展示的逻辑将适用于开发依赖项,因为它将在bundle安装时进行评估。

它不适用于运行时依赖项,因为逻辑将在gem-build时评估,而不是在gem在另一个环境中运行时。 RubyGems没有为您提供基于运行时环境指定不同gem的方法,因此您可以支持的唯一方法是使用不同的gemspecs发布两个不同命名的gem版本。

就个人而言,我没有看到将开发依赖项放在.gemspec中的重点,所以我总是将它们添加到我的Gemfile中,并仅为运行时依赖项保留gemspec。 这更好地区分了关注点并清楚地表明可以在Gemfile中使用gem选择逻辑,但不能在gemspec中使用。