0

我在 VPS 上有一个生产应用程序,无论出于何种原因,我选择不使用 RVM 启动和运行它。我想我一定认为我不需要运行多个版本的 ruby​​,因为我只在其上运行一个应用程序。

我最近遇到了一些问题,即我在开发环境中编写的代码在该环境中运行良好,但在生产服务器上却无法正常运行。

由于我真的不能发生这种情况,我在服务器上检查了我的 ruby​​ 版本,结果发现它正在运行 1.9.3p0(2011-10-30 修订版 33570)[i686-linux](但 1.9.3p374 (2013-01-15 修订版 38858)[x86_64-darwin12.2.0] 在我的开发机器上)。

我很确定这可能是我遇到代码在我的开发机器上运行良好但在部署时出错的原因。看起来那个版本的 ruby​​ 可能是 1.9.3 发布的第一个版本,并且已经快两年了。

所以现在我要么需要以某种方式在生产服务器上升级我的 ruby​​ 版本,要么安装 RVM。我可以通过 google 找到的所有关于升级 ruby​​ 的文章似乎都是基于使用 RVM。我知道那里有安装 RVM 的教程,但我有点害怕使用已经在运行的生产应用程序来安装它。

是否有人对使用生产应用程序并将其切换为使用 RVM 有任何建议或经验?或者,简单地升级我的 ruby​​ 版本而不使用 RVM(这可能更容易)。我需要确保我知道我要做什么,因为这已经在商业上使用了。

非常感谢任何可以提供一些见解的人。

4

1 回答 1

1

该决定主要取决于您当前的设置:

  1. 如果您没有--prefix在默认位置安装 ruby​​,/usr/local或者在共享/公共位置安装了 gem,shared/gems那么您应该选择 RVM,因为它使安装新的 ruby​​ 独立于您的运行环境并且不会干扰它。

  2. 如果你将 ruby​​ 安装在单独--prefix/opt/rubies/1.9.3-p0位置--prefix(/opt/rubies/1.9.3-p374

在任何情况下(除了bundle --deployment使用 RVM 将确保您的 rubies 是独立的并且不会干扰运行生产 - 尽管可能需要额外的步骤来配置应用程序以使用 ruby​​ - 但安装在 nonsandard 中的 rubies 需要相同/类似的额外步骤--prefix.

笔记:

  • 安装的 gembundle --deployment是共享的 - 你不应该使用这个选项,因为它不安全部署
  • 如果您没有使用上述方法安装 gem,您可以检查 gem 的安装位置gem list -d
于 2013-08-27T15:52:22.150 回答