我正在寻找一种更精简、更强大的方法来在操作系统更新后保持我的 rvm 环境完好无损。我正在使用 Mountain Lion、rvm 1.18.16 和 homebrew,它具有 readline、gettext、libxml2、libxslt、qt、gtk+——通常对我来说破坏的宝石是 nokogiri 和 capybara-webkit
现在两次更新 Mountain Lion 和 XCode 后,我的原生扩展 gem 和 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 执行原始操作(这具有重新编译所有本机扩展 gem 的副作用):
rvm use ruby-1.9.3-p392
gem pristine --all
最后,转到每个项目并执行以下操作:
bundle install
我不确定最后一步是否是绝对必要的——有些项目似乎还可以,有些则不然,但运行它似乎可以解决最后剩下的问题。
当然有一种更简化的方式来管理这个过程!?我只使用了 Mountain Lion 和 rvm 几个月,但在那段时间,两个系统更新已经杀死了我大部分工作的 Ruby 环境。由于我作为顾问的工作并且遇到了许多开发环境,我安装了很多 Ruby 版本,所以我真的很想把它归结为一个易于重复的过程。
有什么想法吗?以上可以进一步改进吗?