在 Gemfile 中设置 ruby 版本
Posted
技术标签:
【中文标题】在 Gemfile 中设置 ruby 版本【英文标题】:Set ruby version in Gemfile 【发布时间】:2014-04-21 01:45:34 【问题描述】:我可以在Gemfile
中设置ruby版本如下:
ruby '2.0.0'
但是如果我想要一个特定的版本为2.0.0-p353
呢?
当我将它添加到 Gemfile
时,我得到:
Your Ruby version is 2.0.0, but your `Gemfile` specified 2.0.0-p353
甚至可以设置特定版本吗?
【问题讨论】:
【参考方案1】:在 Bundler 1.3 及更早版本中,您 couldn’t specify the patchlevel:
ruby
指令明确排除了指定补丁级别的能力。 Ruby 补丁通常包含重要的错误和安全修复,并且非常兼容。
这在 1.5 版中有所改变,the docs now say:
在
ruby
指令中,:patchlevel
是可选的,因为补丁级别的版本通常是兼容的并且包含重要的安全修复。 patchlevel 选项检查RUBY_PATCHLEVEL
常量,如果未指定,则捆绑程序将简单地忽略它。
所以你可以像这样指定补丁级别:
ruby '2.0.0', :patchlevel => '353'
【讨论】:
刚刚注意到您需要将patchlevel
指定为字符串。否则,bundler
会报错:The Ruby patchlevel in your Gemfile must be a string
。
@AlexSmolov 看起来你是对的。文档一定是错误的。不过,Gemfile manual 中使用了一个字符串。【参考方案2】:
如果有人希望提醒您如何不指定次要版本,(是的,叫我菜鸟)你可以这样做:
ruby ">=2.2"
这将允许使用 ruby 2.2.4 进行“捆绑安装”调用。
【讨论】:
我找不到此文档,但可以找到此更改日志bundler.io/v1.12/whats_new.html#ruby-version-locking。你也可以这样做ruby "~> 2.2"
@LinhDam,你的意思是~> 2.2.0
?以上是关于在 Gemfile 中设置 ruby 版本的主要内容,如果未能解决你的问题,请参考以下文章
在 Gemfile 和 .ruby-version Dotfile 中列出 Ruby 版本是一种不好的做法吗?
您的 Ruby 版本是 2.0.0,但您的 Gemfile 指定了 2.1.0
您的 Ruby 版本是 2.0.0,但您的 Gemfile 指定了 2.1.1