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

我很困惑,在服务器上,你是应该以普通用户的身份安装RVM还是进行系统范围的安装,如果是后者,你应该如何在不使用sudo情况下进行bundle install

就RVM如何关注运行Rails的服务器(例如Passenger和Nginx)而言,是否有任何关于你应该做什么的明确指导? 在这种类型的环境中,并非所有Ruby进程都在同一个用户下运行,因此我认为就RVM和捆绑器而言,事情变得不明确。

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

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

 bundle install --deployment 

这将默认将它们放在vendor/bundle

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

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

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

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

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

希望有所帮助!