我一直在Rubygems.org上阅读有关Ruby Gems的语义版本操作模式。
例如,我可能想使用一些名为library
的Ruby Gem,其中包含从v2.2
开始到但不包括v3.0
的所有次要更新。我可以在gemspec
或Gemfile
中将其添加为运行时依赖关系:
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