使用rvm在乘客下运行ruby app的问题

时间:2011-04-08 16:11:59

标签: ruby gem passenger rvm bundler

我已经切换了一个ruby应用程序(使用Thoth,它依次使用Ramaze)在一个rvm ruby​​ @ gemset组合中使用bundler。我可以访问它的控制台版本,所以它很高兴它有什么宝石。但是,当我尝试通过服务器访问它时(通过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我得到

/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

/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?就像我说的那样,我对乘客实际上是如何以这种方式挂钩而无知。

1 个答案:

答案 0 :(得分:1)

您需要以root身份安装RVM,以便它是系统范围的安装,并且安装在/ usr / local / rvm中:

sudo bash < <(curl -s https://rvm.beginrescueend.com/install/rvm)

您可以阅读有关安装的更多here。此外,您需要确保您的默认rvm是启动nginx应用程序的正确rvm。例如,您可能希望执行以下操作:

sudo rvm --default 1.8.7@akrotoski
sudo /etc/init.d/nginx restart