为什么 Rails 新安装 rails 5.1.6?

Why does Rails new install rails 5.1.6?

我正在阅读这本书 "Agile Development with Rails," 并按照指南进行操作。使用 Rbenv 我已经安装了 rails 5.1.3。当我 运行 "rails new demo" 它会自动安装 rails 5.1.6.

虽然看起来没什么大不了的,但书中指定您应该使用 5.1.3,我很好奇为什么会这样。我还注意到 运行 显式地使用 rails _5.1.3_ 命令会产生相同的结果,当你 运行 关于你的 bin/rails 仍然以 5.1 结束时.6

如有任何帮助,我们将不胜感激!

默认情况下,rails 新命令似乎只会创建具有最新补丁版本 rails 的应用程序。在撰写本书时,5.1.3 很可能是最新和最好的。尝试安装旧版本的 rails 并多次重复安装过程。我尝试使用 rails 5.0.2 创建一个项目,它使用 rails 5.0.7 创建了一个项目,这是 5.0 的最新补丁版本。

Ubuntu 16.04,使用 rbenv

我刚开始读这本书,运行 遇到了这个完全相同的问题。作为参考,这本书是 Pragmatic Programmer's Agile Web Development with Rails 5.1

解法:

用编辑器打开 Gemfile,找到这一行:

gem 'rails', '~> 5.1.3'

编辑此行以阅读(基本上,删除'~>'):

gem 'rails', '5.1.3'

运行 bundle install,它返回了关于 gem 依赖项的错误列表:

Bash screenshot

运行 bundle update,如错误消息所示。 Bundler 现在恢复到 Rails 5.1.3,并恢复所有依赖它的 gem ("Using rails 5.1.3 (was 5.1.6)"):

Bash screenshot

说明

Bundler states that '~>' means "this version or above, but below the next minor version (in this case 5.2.0, see semantic versioning)”。所以‘~>’允许 Bundler 安装 5.1.6,因为它是当前可用的最高版本。

当您将 Gemfile 更新为 '5.1.3' 时,您是在告诉 Bundler 使用该版本。