Ruby Gem的版本与开发过程中使用的Ruby版本有什么关系



我一直在Rubygems.org上阅读有关Ruby Gems的语义版本操作模式。

例如,我可能想使用一些名为library的Ruby Gem,其中包含从v2.2开始到但不包括v3.0的所有次要更新。我可以在gemspecGemfile中将其添加为运行时依赖关系:

some_gem.gemspec:

spec.add_runtime_dependency 'library','~> 2.2'

gemfile:

gem 'library', '~> 2.2'

我也知道我们可以使用Ruby版本管理(如rbenv。

例如,我还将本地Ruby版本设置为system(在MACOS上)之前:

rbenv local system

在项目root中生成.ruby-version文件。

我对Gem作者使用的Ruby版本与GEM版本有什么困惑。他们有关系吗?宝石作者如何管理Ruby的版本?Gem作者是否为多个Ruby版本发布宝石?

例如,如果作者使用2.3.1来构建她的宝石,这意味着只有system Ruby的人无法使用它?

Ruby版本规范是可选的,只是用来帮助开发人员更轻松地消耗GEM。例如,有许多2.3宝石没有必需的_ruby_version集。如果您尝试在1.9上运行这些错误,则可能会遇到错误,但他们不会明确说Ruby版本是错误的,因此它们很难调试。

顺便说一句,您可以将2.3作为系统Ruby -sudo apt-get install ruby2.3

最新更新