Ruby on rails 如何使用rvm将ruby 1.9.2-p0升级到最新的补丁级别?

Ruby on rails 如何使用rvm将ruby 1.9.2-p0升级到最新的补丁级别?,ruby-on-rails,ruby,rvm,Ruby On Rails,Ruby,Rvm,我目前的ruby版本是ruby 1.9.2p0(2010-08-18修订版29036)[x86_64-darwin10.5.0],但我想使用rvm将其更新到最新的补丁级别。我该怎么做呢?我猜它的rvm安装1.9.2-head 您可以查看已知rvm列表的可用红宝石您可以按照其中的页面安装任何补丁级别 此外,每个ruby都是独立的,因此您不是真正的“升级和保留gems”,而是安装一个新的补丁版本,然后在新的ruby环境中安装gems 这可能是宝石发挥作用,但我不使用它们 不要忘记也更新rvm,以防万

我目前的ruby版本是
ruby 1.9.2p0(2010-08-18修订版29036)[x86_64-darwin10.5.0]
,但我想使用rvm将其更新到最新的补丁级别。我该怎么做呢?

我猜它的
rvm安装1.9.2-head


您可以查看已知rvm列表的可用红宝石

您可以按照其中的页面安装任何补丁级别

此外,每个ruby都是独立的,因此您不是真正的“升级和保留gems”,而是安装一个新的补丁版本,然后在新的ruby环境中安装gems

这可能是宝石发挥作用,但我不使用它们


不要忘记也更新rvm,以防万一。首先,通过运行
rvm get stable
更新rvm安装

为了确保您正在运行新的RVM版本,您需要运行
RVM reload
(或者只打开一个新的终端)

完成后,您可以通过运行
rvmlistknown
让RVM列出可安装的ruby版本

在输出中,您现在应该看到:

# MRI Rubies
...
[ruby-]1.9.2[-p320]
...
补丁级别周围的方括号表示这是当前RVM对ruby 1.9.2的默认补丁级别

最后,要安装新的ruby版本,只需运行
rvm install 1.9.2
——并等待编译

像这样:

rvm update; rvm reload
rvm install ruby-1.9.2-p136 
rvm --default ruby-1.9.2-p136
升级ruby解释器并保留现有Gemset:

$ rvm upgrade 1.9.2-p0 1.9.2
Are you sure you wish to upgrade from ruby-1.9.2-p0 to ruby-1.9.2-p136? (Y/n): Y
替换为1.9.2的最新稳定版本。这样可以避免混乱

感谢评论(@Mauro、@James、@ACB)提供了一些额外的有用提示


这篇博文应该很有帮助:

要点:

rvm get head
rvm reload

wget https://gist.github.com/raw/1008945/4edd1e1dcc1f0db52d4816843a9d1e6b60661122/ruby-1.9.2p290.patch
rvm install ruby-1.9.2-p290 --patch ruby-1.9.2p290.patch -n patched

npad的答案明确地列出了基础知识,因此我不会重复这些步骤,但这里有几个答案建议使用
rvm升级
。我知道rvm给了你选择的机会,但这有点危险

在我看来,更安全、更“rvm方式”是首先
rvm安装新的ruby版本,然后使用
rvm gemset copy
命令将您的gemset复制到新的ruby版本,例如
rvm gemset copy 1.9.2-p0@some-gemset 1.9.2-p290@some-gemset
。然后,您可以轻松地将项目切换到使用新复制的gemset(我建议使用项目目录中的
.rvmrc
文件),并查看代码是否失败。如果是的话,切换回旧的ruby版本只是切换gemset的问题

但是,即使您不使用gemset(尽管我假设您使用gemset,因为您在这个问题上标记了rails),使用
rvm-upgrade
也可能导致意外的故障。如果你的代码坏了,现在你必须重新安装旧版本。只需多花一点时间,以干净的方式完成即可。

第一次更新RVM:

rvm get stable
然后更新您的Ruby版本:

rvm upgrade 2.0.0
对所有问题选择“是”:

Are you sure you wish to upgrade from ruby-2.0.0-p195 to ruby-2.0.0-p247? (Y/n): Y
Are you sure you wish to MOVE gems from ruby-2.0.0-p195 to ruby-2.0.0-p247?
This will overwrite existing gems in ruby-2.0.0-p247 and remove them from ruby-2.0.0-p195 (Y/n): Y
Do you wish to move over aliases? (Y/n): Y
Do you wish to move over wrappers? (Y/n): Y
Do you also wish to completely remove ruby-2.0.0-p195 (inc. archive)? (Y/n): Y
如果您希望将gems更新至最新版本,可以执行以下操作:

rvm all do gem update
编辑:我今天刚刚为最新版本的ruby 2.0.0做了这个(我从ruby-2.0.0-p195更新到ruby-2.0.0-p353)。在那之后,当我试图更新gems时,我遇到了分割错误。这是因为gems是为ruby-2.0.0-p195安装的,其中一些与p353不兼容

现在,您可以尝试查找不兼容的gem,但最简单的解决方案是删除所有已安装的gem并重新安装。我只是删除了
/usr/local/rvm
中的
gems/ruby-2.0.0-p353
目录。你可以在别的地方


然后我运行了
gem安装bundler
,对于我的每一个rails应用程序,我都执行了
bundle安装

是否将
head
获得最新的补丁级别?我认为它是最新版本的,这意味着它可能是不稳定的和实验性的。啊哈,真的。我混合了最新版本和补丁版本。虽然这在理论上可以回答这个问题,但在这里包括答案的基本部分,并提供链接供参考。对于那些遇到错误的人:rvm更新已被删除。-
rvm get latest
/
rvm get head
是现在升级rvm的正确方法。
rvm get stable
解决了我在MacOS上遇到的这个错误:
错误:仅对列表公式调用“brew list”被禁用!改用“brew列表--公式”
。谢谢我喜欢这个答案。我觉得升级ruby版本有点违背了使用rvm的目的。在p0旁边安装一个单独的版本,然后将较新的(或任意一个)版本声明为默认版本似乎很优雅。出于安全原因,有时需要升级到最新的补丁程序,例如在特定Ruby版本中发现漏洞。此外,你可以
rvm-list-known
查看你可以升级到的可用ruby版本。由@Mauro Nidola建议的编辑“$rvm-upgrade 1.9.2 1.9.2-p0应该更改为$rvm-upgrade 1.9.2-p0 1.9.2”我看不到他的评论@ACB,我会更改,你的代表告诉我我不必重复检查。我也在和詹姆斯更新comment@oma,我来自不同的技术领域。所以你可能需要仔细检查一下。这是某人建议的编辑,但因无效编辑而被拒绝。看看这个。理想情况下,他应该发表评论,而我则代表他发表评论。
rvm all do gem update