我正在寻求一种更加简化和强大的方法,以便在操作系统更新后保持我的rvm环境不变。我正在使用Mountain Lion,rvm 1.18.16和homebrew,它有readline,gettext,libxml2,libxslt,qt,gtk + - 通常为我打破的宝石是nokogiri和capybara-webkit
在更新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
但是这给了我这个错误:“重新安装:找不到命令”
接下来,逐步浏览每个ruby并在gem上执行pristine(这具有重新编译所有本机扩展gem的副作用):
rvm use ruby-1.9.3-p392
gem pristine --all
最后,转到每个项目并执行以下操作:
bundle install
我不确定最后一步是否是绝对必要的 - 有些项目似乎没问题,有些项目没有,但是运行这似乎可以解决最后剩下的问题。
肯定有更简化的方法来管理这个过程!?我只使用了Mountain Lion和rvm几个月,但在那个时候,两个系统更新已经杀死了我工作的大部分Ruby环境。我安装了很多Ruby版本,因为我担任顾问并遇到许多开发环境,所以我真的很想把它变成一个容易重复的过程。
有什么想法?以上可以进一步改进吗?
答案 0 :(得分:14)
你可以这样做:
rvm reinstall all
追加--force
以跳过问题。
请注意,将完全重新安装,包括每个gem的gem pristine
,您需要注意输出,因为它会通知您有关未能执行pristine
操作的gem。