【发布时间】:2011-08-01 15:47:01
【问题描述】:
我已经切换了一个 ruby 应用程序(使用 Thoth,它又使用 Ramaze)在 rvm ruby@gemset 组合中使用捆绑器工作。我可以访问它的控制台版本,所以它很高兴它有什么宝石。但是,当我尝试通过服务器访问它时(通过 nginx 下的乘客),我从乘客那里收到此错误:
在任何源中都找不到 activesupport-2.3.8 (Bundler::GemNotFound)
我不明白这一点,因为我在 rvm 的应用程序 gemset 中安装了 activesupport 2.3.8。也许乘客不知道 rvm,或者知道使用正确的 rvm?我不确定乘客如何连接到我的应用程序,以及它是否需要了解 rvm 等信息。我见过的对乘客的唯一引用是在我的 nginx 配置块中,我说passenger_enabled on;
还有其他人遇到过这种性质的问题吗?
最大
编辑:有关我的设置的更多详细信息:
我的应用在/var/www/apps/akrotoski
这是在一个名为ruby-1.8.7-p302@akrotoski的rvm/gemset中@
我突然想到这可能是 nginx 在 root 下运行的问题。如果我切换到 root 并执行 echo $PATH 我得到 p>
/opt/ruby-enterprise-1.8.7-2011.01/bin/:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
如果我在我的应用程序的 rvm 中 echo $PATH 我得到 p>
/home/deploy/.rvm/gems/ruby-1.8.7-p302@akrotoski/bin:/home/deploy/.rvm/gems/ruby-1.8.7-p302@global/bin:/home/deploy/.rvm/rubies/ruby-1.8.7-p302/bin:/home/deploy/.rvm/bin:/opt/ruby-enterprise-1.8.7-2011.01/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
所以也许 nginx/passenger 正在以不使用 rvm 的方式运行?就像我说的,我完全不知道乘客是如何以这种方式连接到应用程序的。
【问题讨论】:
-
你是如何开始乘客/nginx的?您使用的是什么命令以及从哪个目录运行它?
-
嗨,潘。我用
/etc/init.d/nginx restart启动nginx。因为我启用了passenger_enabled;在我的 nginx 配置中阻止此应用程序,然后它应该自动拾取它。我可以在应用程序的根文件夹中使用touch tmp/restart.txt重新启动启用乘客的应用程序。我将在我的 OP 中添加更多关于文件夹等的详细信息。 -
您是将 rvm 安装为 sudo 和系统范围还是仅针对特定用户?
-
只针对特定用户 - 我想这是我的错误? (见对 OP 的编辑)。我刚刚切换到 root 并执行了“rvm”,但它无法识别该命令。您需要执行 .bashrc hack 才能使用 rvm 命令
http://www.christopherirish.com/2010/08/25/how-to-install-rvm-on-ubuntu-10-04/comment-page-1/#comment-103,我在 root 的 .bashrc 中尝试过,但没有帮助。所以,我想我搞砸了。您认为解决此问题的最佳方法是什么,即也授予对 rvm 的 root 访问权限?我应该以root身份再次安装它吗?这会引起冲突吗?
标签: ruby gem passenger rvm bundler