- 是的。使用捆绑器,不会有任何痛苦。
- 它只需要在 RVM 环境中运行。不需要特殊的移植。
- 它旨在通过替换 $PATH、$GEM_HOME、$GEM_PATH 等环境变量来为每个项目提供单独的环境。
优点:
- 您可以安装不同的 ruby 解释器来满足应用程序的要求。想象一下,您正在使用 Rails 1.9.3 开始一个新项目,但您仍在使用旧的两个使用 1.8.7 和 1.9.1 并且到目前为止尚未移植。
- 您的宝石不会相互冲突。例如,Psych 有特殊需求。如果你使用它,你必须在你的所有项目中使用它。但是使用 RVM,您可以为每个项目创建不同的 gemset。
- 将 gem 目录移动到您获得读写访问权限的目录。这很好,因为不会强制您使用 root 权限编译 gem。
缺点:
- 在 Fish shell 下长时间使用 RVM 时,我遇到了问题。有两次,几周后整个 RVM 都发疯了,然后就坏了。不详述,我必须删除整个
~/.rvm
目录。在 Bash 下从未发生过。
我使用 RVM 的典型工作流程如下:
- 添加
ruby "1.9.3"
或等效于我的项目的 Gemfiles 以避免使用错误的 Ruby 版本运行它。
- 安装 RVM 并安装我需要的 Ruby
rvm install 1.9.3
,.
- 在给定的项目中,
rvm use 1.9.3
.
- 安装所需的 gem。
- 正常使用我的应用程序。
请注意我没有使用 Gemsets。这是因为缺点 #1。我真的很喜欢 Fish shell,没有它就活不下去,而且仅使用 bundler 就可以很好地管理宝石(一个问题:心理)。要使用 Gemsets,在 3. 和 4. 之间需要两个额外的步骤:
3a。创建一个rvm gemset create gemset1
。
3b。使用它rvm use gemset1@1.9.3
。
在处理一些遗留项目时,我总是使用 RVM。
请参阅此截屏视频:http ://railscasts.com/episodes/200-rails-3-beta-and-rvm以获得体面的教程。