如何使用 rvm 在 rails 应用程序上升级 ruby 版本的 ruby

How to upgrade ruby version of ruby on rails app using rvm

如何使用 rvm 在 rails 应用程序上安全地升级我的 ruby 以使用新的 ruby 版本?

假设您的应用程序是 my_app 并且您正在使用 ruby 版本 a.b.c 并且想要转到 ruby 版本 x.y.z.

步骤 0

开始之前,请确保您拥有最新版本的 rvm

rvm get stable
rvm reload

步骤 1

首先,如果您没有当前 ruby 版本的 gemset,请创建一个并将其设为默认值。如果您的升级破坏了您的测试,这为您提供了一种简单的返回方法。如果您不想这样做,请转到步骤 2。

rvm gemset create my_app_abc

切换到该 gemset 并将 gem 安装到该 gemset 中,并使其成为目录的默认 gemset

rvm a.b.c@my_app_abc
bundle
rvm --ruby-version use a.b.c@my_app_abc

步骤 2

现在升级到新的 ruby 版本并为其创建一个 gemset。

rvm install x.y.z
rvm use x.y.z
rvm gemset create my_app_xyz
rvm x.y.z@my_app_xyz

在 Gemfile 中指定 ruby 版本被认为是最佳实践,因此 确保你的 Gemfile 顶部有 ruby 'x.y.z'。那么

gem install bundle
bundle

这就是乐趣开始的地方,此时您可能会遇到错误,并结合使用错误说明或谷歌搜索寻求帮助等方法来解决它们。当您可以成功捆绑时,然后 运行 您所有的测试。

当您的测试全部通过后,您就升级成功了。如果遇到问题,可以使用 rvm a.b.c@my_app_abc.

返回到旧安装

一旦您对新安装感到满意,然后执行

rvm --ruby-version use x.y.z@my_app_xyz

将其设为该应用的默认设置。这意味着当您从其他项目切换到此应用程序时,它将自动加载 ruby 版本 x.y.z 和相应的 gemset。

根据此 blog,如果您总是在命令前加上 bundle exec,则不需要使用 gemset。在那种情况下,你只需做

rvm --ruby-version use x.y.z