Docs header transparent bg

指定 Ruby 版本

与 gem 类似,开发人员可以设置对 Ruby 的依赖关系。如果依赖 Ruby VM 中的特定功能,这将使您的应用程序更快地失败。这样,部署服务器上的 Ruby VM 将与您的本地 VM 相匹配。您可以通过在 Gemfile 中使用 ruby 指令来实现这一点。

ruby 'RUBY_VERSION', :engine => 'ENGINE', :engine_version => 'ENGINE_VERSION',
:patchlevel => 'RUBY_PATCHLEVEL'

如果您想使用 JRuby 1.6.7 和 Ruby 1.9.3,只需执行以下操作:

ruby '1.9.3', :engine => 'jruby', :engine_version => '1.6.7'

也可以通过以下方式限制使用的 Ruby 的补丁级别:

ruby '1.9.3', :patchlevel => '448'

如果您希望从版本文件(例如 .ruby-version)中获取 Ruby 版本,可以使用 file 选项。

ruby file: ".ruby-version"

版本文件应符合以下任何格式:

Bundler 将对当前运行的 Ruby VM 进行检查,以确保它与 Gemfile 中指定的版本匹配。如果两者不匹配,Bundler 将引发异常,解释不匹配的原因。

Your Ruby version is 1.8.7, but your Gemfile specified 1.9.3

:engine:engine_version 都是可选的。当省略这些选项时,这意味着应用程序与特定 Ruby ABI 兼容,但引擎无关紧要。当使用 :engine 时,也必须指定 :engine_version。使用 platform 命令和 --ruby 标志,您可以查看 Gemfile 中指定的 ruby 指令。

ruby 1.9.3 (jruby 1.6.7)

了解更多:bundle platform

ruby 指令中,:patchlevel 是可选的,因为补丁级别版本通常是兼容的,并且包含重要的安全修复。补丁级别选项检查 RUBY_PATCHLEVEL 常量,如果未指定,则 bundler 将忽略它。也可以使用版本运算符来指定 Ruby 版本。支持的版本运算符集与 Rubygems(gem 版本运算符)相同。(例如 <><=>=~>=

ruby '~> 2.3.0'

了解更多:版本运算符

在 GitHub 上编辑此文档,如果您发现错误或遗漏内容。