【发布时间】:2011-10-29 04:08:16
【问题描述】:
我正在将我最初在 ruby 1.8.7 和 rails 2.3.5 中的 rails 应用程序升级到 ruby 1.9.2 和 rails 2.3.12,并尝试使用 RVM 和 bundler,预计迁移会更容易.在我的本地机器上一切正常,但我很难使用 RVM 并将我的包部署到生产环境中。
首先,我不确定 RVM 是否正确加载了我的默认环境。我用我的 root 用户进行了多用户安装。然后我输入:
rvm --默认使用1.9.2
并添加:
[[ -s "/usr/local/rvm/scripts/rvm" ]] && ."/usr/local/rvm/scripts/rvm"
到我的 root 用户 ~/.bash_profile,但是当我打开一个新的 shell 并输入“which ruby”时,它会链接到“/usr/local/rvm/bin/ruby”。当我输入“rvm default”然后输入“which ruby”时,我得到了预期的“/usr/local/rvm/rubies/ruby-1.9.2-p290/bin/ruby”。所以我不确定 RVM 是否已正确安装和配置。
然后,我的包安装在(我相信)在:
“/home/web-app/www/shared/bundle”
当我输入“捆绑列表”时,我可以看到我安装的 gem(包括我的 rails 2.3.12)。但是当我做“宝石清单”时,我只看到:
*** LOCAL GEMS ***
bundler (1.0.18)
daemon_controller (0.2.6)
fastthread (1.0.7)
passenger (3.0.8)
rack (1.3.2)
rake (0.9.2 ruby)
我的捆绑包中的宝石不在列表中。所以现在,在我的现场(叹气)上,乘客找不到 Rails 2.3.12(可以从捆绑包中访问,而不是在 Local Gems 中)。不知道如何告诉乘客共享/捆绑文件夹中有一些可用的宝石......
希望得到一些帮助!
-- 编辑:
1:我没有以正确的方式安装乘客。我用过
sudo 乘客安装-apache2-模块
使用“sudo”导致安装发生在我的系统 ruby 上,而不是 RVM 上。一旦我运行命令 WITHOUT sudo,控制台就会给我正确的行插入到我的 apache2.conf 文件中,并且我能够启动我的服务器。第一步很好,但现在我无法开始思考-sphinx:它抱怨找不到 Rails 2.3.12...
- 默认情况下,Rails 2.3 仅从 Gemset 加载 gem。正如here 所解释的那样,我必须添加一些代码来告诉我的应用程序也加载捆绑的 Gems。
【问题讨论】:
-
上周我在设置一些 Rails 服务器(CentOS 和 Ubuntu)时发现,如果我尝试将 RVM 与Passenger 结合使用,则会导致严重的问题。这可能是一个巧合,但如果您只是在生产模式下设置服务器,我建议您尝试在没有 RVM 的情况下设置您的东西(因为无论如何您在生产服务器上实际上不需要多个版本的 Rails )。其次,我不完全确定 Ruby 1.9.2 可以与 Rails 2.x 一起使用,尽管我可能是错的。我建议只使用 Ruby 1.8.7——没有真正的理由使用 1.9.2,不是吗?
-
我开始使用 Ruby 1.9 准备迁移到 Rails 3,并且在本地一切正常。但即使没有 RVM,因为捆绑的 gem 位于 shared/bundle 文件夹中,我认为 Ruby 和乘客不会找到它们,不是吗?所以我现在想,我只需要让 RVM 知道 gems 在哪里,或者在特定位置提供“捆绑安装”选项,但我不知道那个位置应该是什么。有什么想法吗?
-
RVM 把你的宝石放在一个奇怪的位置,我相信。您可以检查您的环境变量(命令行 printenv)并将路径导出到您的 gem 真正所在的位置,但是如果您只是卸载了 RVM、Ruby gem 等并安装了老式的 RoR,这一切不会简单得多大大地?我保证不会花那么长时间,值得一试:)
标签: ruby-on-rails passenger rvm