RVM在linux上有什么优点?
请理解我并不是想抨击 RVM。我只是想了解为什么它在 Ruby 社区如此受欢迎。
使用 RVM 似乎有两个主要原因 - 管理/在不同版本的 Ruby 之间切换,以及管理每个项目的特定 gemset。然而,在 Linux 上似乎有更简洁的方法可以实现相同的目标:
- 我可以安装不同的 ruby 版本 从存储库通过 常规包管理器,或构建 从源代码并作为包安装。 我可以使用在版本之间切换 update-alternatives(至少在 Debian、Ubuntu、Fedora 上)。
- 我可以使用 Bundler 来管理一组 不同项目的宝石,如 此博文中概述。
鉴于上述情况,我很困惑为什么要使用 RVM 来管理 Ruby 版本和 gem。使用 bash 脚本在包管理器之外的系统上安装软件的想法感觉非常黑客,这种感觉得到了 这篇博文。
作为一名 Mac 用户,我完全是猜测,但我认为 OS X 可能在 Ruby 社区中非常流行。如果没有像 update-alternatives 这样的系统来在 OS X 上切换 ruby 版本,RVM 可能是最好的解决方案,并且这个想法也被延续到了 Linux 上......就像我说的,这只是一个猜测。
那么为什么 RVM 如此受欢迎,为什么我应该更喜欢它而不是 Debian 或 Ubuntu 上的常规包管理器 + Bundler?
Please understand that I'm not trying to bash RVM. I would just like to understand why it's so popular in the Ruby community.
There appears to be two main reasons to use RVM - to manage/switch between different versions of Ruby, and to manage a specific gemset per project. However there seem to be much cleaner ways of achieving the same thing on linux:
- I can install different ruby versions
from the repositories through the
regular package manager, or build
from source and install as a package.
I can switch between versions using
update-alternatives (on Debian, Ubuntu, Fedora at least). - I can use Bundler to manage sets of
gems for different projects, as
outlined in this blog post.
Given the above, I'm confused as to why I would want to use RVM to manage Ruby versions and gems. The idea of using a bash script to install software on my system outside the package manager feels very hackish, a feeling backed up by this blog post.
Not being a Mac user I am totally guessing here, but I thought it might be that OS X is very popular in the Ruby community. If there is no system like update-alternatives for switching ruby versions on OS X, RVM might be the best solution and this idea has carried over to linux too.. like I said, this is just a guess.
So why is RVM so popular, and why should I prefer it over the regular package manager + Bundler on Debian or Ubuntu?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
如果您需要像我一样使用不同版本的 Ruby 和特殊 Rails 管理许多项目(我有 3 个项目需要管理,其中使用 Rails 2.3.5、Rails 3.0.5 和 Rails 3.1 rc1),那么 RVM 是必要的解决方案。您可能知道 Rails 2.3.x 没有捆绑程序支持并使用旧的 gem,因此版本管理是使开发更容易的方法。我希望我对你有一点帮助。
If you need to manage many project with diferent versions of Ruby and special Rails like me (I have 3 project to manage wich uses Rails 2.3.5, Rails 3.0.5 and Rails 3.1 rc1) do RVM is nessesary solution. As you may know Rails 2.3.x has no bundler support and uses old gems so version managing is the way to make developing easier. I hope I helped you alittle.
.rvm
目录即可。.rvm
目录。update-alternatives
works globally, RVM works in shell/script context - I suppose it is modyfying env paths. Now imagine having two apps on one server: one 1.8.7 and another 1.9.2.rvm
dir..rvm
dir.