系统范围的RVM安装是个坏主意吗?

时间:2011-04-05 22:11:57

标签: ruby ruby-on-rails-3 passenger rvm

我很担心,在服务器上,你是应该以普通用户的身份安装RVM还是进行系统范围的安装,如果是后者,你应该怎样做{{{ 1}}不使用bundle install

就RVM是否涉及运行Rails的服务器而言,是否有任何明确的指导方针可以解决您的问题。乘客和Nginx?在这种类型的环境中,并非所有Ruby进程都在同一个用户下运行,所以我认为就RVM和Bundler而言,事情变得不明确。

如何在服务器上一起避免使用RVM,只需在那里安装Ruby和gems?如果你可以逃脱它,那会更好吗?

3 个答案:

答案 0 :(得分:6)

您可以将RVM安装为普通用户,但我不明白这一点。 Bundler是每个应用程序,不需要sudo权限,因为它可以将您的gem安装到bundle安装用户可以访问的bundle目录中,例如:

bundle install --deployment

默认情况下会将它们放在vendor/bundle中。

我认为RVM是一个用于管理多个ruby版本的开发工具。在部署机器上,我倾向于使用系统Ruby或从源代码安装。

答案 1 :(得分:4)

我强烈建议在生产环境中进行系统范围的安装。运行特定于用户的RVM似乎是一个巨大的麻烦。我在生产中使用Passenger / Nginx,每个项目都有自己的用户。我所要做的就是将它们添加到rvm组中,我很高兴。

答案 2 :(得分:3)

RVM可以作为超级用户安装。虽然它不需要,但这样做有很多好处(特别是在多用户系统上)。 Ruby(以及相关的Ruby Gems)附带的任何命令都应正确设置其权限才能正确运行。 Bundle不需要使用超级用户访问权限。它可以在特定用户下运行,就像使用完整的sudo完成时,gem安装对于用户或系统范围来说是本地的。

RVM只管理您特定的Ruby安装,因此您可以在多个级别的Ruby上进行开发 - 从RMI 1.8和1.9到JRuby 1.6等等。您可能正在处理不同的项目,因此每个项目需要不同的需求。

就服务器本身而言(假设它是一个面向外部的服务器上面有某种内容),这实际上取决于系统管理员。用例有所改变。如果您只需要服务器上的Ruby 1.9,那么就不需要RVM。因为不需要管理多个版本的Ruby。因此,当您决定是否在服务器本身进行系统扩展时,我会考虑到这一点。

希望有所帮助!