8

我正在寻找一种更精简、更强大的方法来在操作系统更新后保持我的 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 版本,所以我真的很想把它归结为一个易于重复的过程。

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

4

1 回答 1

14

你可以做:

rvm reinstall all

附加--force以跳过问题。

请注意,将对gem pristine每个 gem 进行完全重新安装,您需要注意输出,因为它会通知您有关未能执行pristine操作的 gem。

于 2013-03-08T02:58:15.290 回答