2013-03-07 51 views
7

我正在寻求一种更简化和可靠的方法,以在操作系统更新后保持我的rvm环境完好无损。我使用Mountain Lion,rvm 1.18.16和自制软件,它有readline,gettext,libxml2,libxslt,qt,gtk + - 通常为我打破的宝石是nokogiri和水豚 - webkit系统更新后更新所有RVM红宝石和宝石的最佳方式?

更新后两次Mountain Lion和XCode,我的本地扩展宝石和Ruby已经遭到破坏,我不得不花时间让所有的东西重新开始工作。我不得不怀疑我是否按照最佳做法在此类系统更新后获取所有rvm组件。

通常会发生的事情是,本机扩展的gem正在链接不再可用的旧库,特别是与围绕Mountain Lion的libxml问题。下面是我为了让系统在所有项目中恢复联机而采取的基本步骤(我在rvm下安装了大约8个Ruby版本,所以这很乏味!)。

首先,通过App Store更新Mountain Lion和XCode。

其次,更新与自制程序:

brew update 
brew upgrade 

然后列出你的红宝石,并开始重新编译每一个与...

rvm list 
rvm reinstall ruby-1.9.2-p290 
rvm reinstall ruby-1.9.3-p392 
... 

注:我也尝试:

rvm all do reinstall 

但是这给了我这个错误:“重新安装:找不到命令”

接下来,通过每个红宝石步骤和执行上的宝石原始的(这有重新编译所有的原生扩展宝石的副作用):

rvm use ruby-1.9.3-p392 
gem pristine --all 

最后,进入到每一个项目,并执行以下操作:

bundle install 

我不确定最后一步是否是绝对必要的 - 有些项目似乎没问题,有些则没有,但运行这似乎清理了最后剩下的问题。

当然有更简化的方法来管理这个过程!我只用了两个月的Mountain Lion和rvm,但在那段时间里,两次系统更新已经使我大部分工作的Ruby环境都无法正常工作。我安装了很多Ruby版本,因为我担任顾问,遇到很多开发环境,所以我真的很想把这个过程放到一个容易重复的过程中。

有什么想法?以上可以进一步改进吗?

+0

从IRC上的mpapis #rvm:如果您没有对bundle使用--path或--deployment命令选项,那么rvm全部重新安装也将清除每个项目捆绑的gem的问题。 – 2013-03-08 16:43:06

回答

11

你可以这样做:

rvm reinstall all 

追加--force跳过问题。

注意,会做完全重新安装,包括每个宝石gem pristine,你需要注意的输出,因为它会通知您未能执行pristine行动的宝石。

+1

有趣!当你没有任何参数运行rvm时,甚至没有将它列为Action。它也显然不是在https://rvm.io/rubies/installing/页面上的记录命令(也不是我检查过的其他命令)......所以这就引发了问题......它在哪里记录下来? – 2013-03-08 14:55:20

+1

是的,这是实验功能,我错过了文档,将尝试将其添加到帮助 – mpapis 2013-03-08 15:23:27

+1

感谢您对#irc的输入。我已经为此提交了票证 – 2013-03-08 16:41:00