【问题标题】:Which would work for a multi-user Ruby setup? RVM or RBenv?哪个适用于多用户 Ruby 设置? RVM 还是 RBenv?
【发布时间】:2023-03-04 18:36:01
【问题描述】:

在工作中,我们有一个开发机器设置,很像生产机器。对于每个运行的项目,我们使用不同的用户。到目前为止,我们只做 Java 和 PHP 项目,但现在我想开始做 Ruby on Rails 项目,所以我希望能够像设置 Java 和 PHP 一样设置我的 Rails 应用程序,每个项目都有另一个用户。

我应该使用哪个 Ruby 版本管理器来执行此操作? RVM 还是 RBenv?我找不到任何关于 RBenv 支持多个用户的信息。

当我们对 RVM 进行多用户(系统范围)设置时,是否可以为每个用户设置一个默认的 Ruby 版本,这样每个人都有一个默认的 RVM,但会为某些用户覆盖这个默认值?

到目前为止,我们的网络服务器是 Apache,那么 mod 乘客是运行我的 Rails 项目的最佳选择吗?

我也查看了 Pow,但我认为这不是在多用户设置中使用的好解决方案。

对此有什么想法吗?

【问题讨论】:

  • rbenv 和 rvm 是为单用户使用而构建的。我建议不要在系统范围内使用它们,它们只是不是为此而构建的。这就是为什么 RVM 最初删除了它的系统范围的安装和文档。 rbenv 更轻量级,如果您确实在系统范围的环境中使用它会更容易调试,不过

标签: ruby-on-rails ruby rvm passenger


【解决方案1】:

嗯,RVM 绝对是为多个用户以及每个用户安装构建的。请参阅installation page 了解更多信息。

此外,请参阅该部分中的集成部分和乘客页面,以将多个 gemset 与乘客一起使用,但是,乘客仅限于单个 Ruby。

为了能够在该 Ruby 空间内使用任何 Ruby 和任何 gemset,您需要为此设置 Unicorn。您可以轻松使用 Apache 和 Unicorn 或 NGinx 和 Unicorn 来完成您想要的一切。

【讨论】:

  • 我不得不不同意“为多用户构建”。例如rvm 组的用户可以删除 rvm 组的另一个用户创建的 gemset。
  • 完全正确。它是为多用户租户设计的 rvm 组的一部分。这是标准的 Unix 权限集。这很正常。这就是 Unix 组的工作方式。在这方面没有特殊性。您可以在 unix 下的普通用户组中执行相同的操作,也可以使用 rvm 执行相同的操作。使用 RVM 并不会神奇地改变这一点。在 Unix 下重新定义组的工作方式,你也许可以改变它。在此之前,您为 unix 组安装的任何软件都将像这样运行。
  • 我同意你的看法。然而,关键是 rvm 设计,因为它是现在,允许用户踩到另一个用户的脚。因此,我不会为我的用户群部署它。
  • Vassilis 您可能想查看 RVM 的当前版本。我们已经为用户实现了在 /usr/local/rvm 中安装 rvm 并将他们的 gem 集和 rubies 放在 $HOME/.rvm 中的功能。是的,我承认这意味着您使用了更多磁盘空间,但是,我相信这应该会给您所需的分离程度。
  • 正是我们需要的,恭喜达里尔!
【解决方案2】:

RVM 和 RBENV 将它们的文件(rubies/gems 等)保存在用户文件夹(~/.rvm、~/.rbenv)中。所以你可以使用你喜欢的。

您可以在小型项目中使用乘客,但对于大型项目 - 尝试 Unicorn 或 Thin。

【讨论】:

  • 您也可以在小型项目中使用Passenger。然而,Unicorn 可能是更好的选择,因为它非常轻巧,而且乘客通常仅限于单个 ruby​​ 版本。
  • 多用户 RVM 安装未安装在 ~/.rvm 中,而是安装在 /usr/local/rvm 中
【解决方案3】:

您可能想试试chruby。 chruby 专门设计用于允许使用安装到/usr/local/$ruby/opt/$ruby 的红宝石,但仍允许用户将gem 安装到~/.gem/$ruby/$version/。如果您使用 chruby 作为 root,gems 会安装到 /path/to/$ruby/$gem_dir/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-03
    • 1970-01-01
    • 2023-04-03
    • 1970-01-01
    相关资源
    最近更新 更多