Ruby on Rails - 切换生产应用程序以使用RVM或升级Ruby?

时间:2013-08-27 00:26:58

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

我在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。我通过谷歌找到的关于升级ruby的所有文章似乎都是基于使用RVM。我知道有关于安装RVM的教程,但我有点害怕使用已经运行的生产应用程序。

有没有人对制作应用并将其切换为使用RVM有任何建议或经验?或者,只是在不使用RVM的情况下升级我的ruby版本(这可能更容易)。我需要确保我知道自己要做什么,因为这已经在商业上使用了。

非常感谢能够提供一些见解的任何人。

1 个答案:

答案 0 :(得分:1)

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

  1. 如果您在默认位置--prefix中安装了没有/usr/local的ruby,或者在shared/gems等共享/公共位置安装了gem,那么您应该选择RVM,因为它会进行安装新的红宝石,与您的运行环境无关,不会打扰它。

  2. 如果您在单独的位置(--prefix)安装了ruby,如/opt/rubies/1.9.3-p0,并且宝石安装在此ruby内部的默认路径中,那么您可以安全地安装另一个ruby in new {{1像} --prefix

  3. 在任何情况下,使用RVM的(除了/opt/rubies/1.9.3-p374都会确保您的rubies是独立的并且不会干扰正在运行的生产 - 尽管可能需要额外的步骤来配置应用程序以使用ruby - 但是在非标准bundle --deployment中安装的红宝石需要相同/类似的额外步骤。

    说明:

    • 与[{1}}一起安装的gem已共享 - 您不应使用此选项,因为不安全用于部署
    • 如果您没有使用上述内容安装宝石,可以使用--prefix
    • 检查宝石的安装位置