使用Capistrano& amp;无法访问部署在Passenger上的应用程序的Rails控制台RVM

时间:2011-03-16 21:08:09

标签: ruby-on-rails rubygems capistrano rvm

在最终设法使我的Rails应用程序正常工作之后,我遇到了一个有点令人困惑的问题。我已经将我的Rails 3.0.5应用程序部署到带有Capistrano,RVM和Nginx的Ubuntu 10.10服务器上。一切正常,我可以确认Rails正在工作,因为我从数据库获取数据和有意义的日志消息。

问题是在服务器上,我无法访问控制台。当我尝试

rails c

它说“程序'rails'目前尚未安装。要运行'rails',请让管理员安装包'rails'”

然而,它安装,否则我的应用程序将无法正常工作!我只安装了两个RVM gemsets,全局一个和一个叫做“rails305”。试图

rvm gemset use rails305

然后

gem list

没有显示我的应用程序需要的任何宝石,但必须安装它们,因为1)如果没有它们,应用程序将无法工作; 2)在我的Capistrano部署脚本中,bundler会安装它们(到那个gemset)。所以这个问题显然与RVM有关,但是我无法解决它是什么......任何想法?

2 个答案:

答案 0 :(得分:16)

看起来Capistrano使用了捆绑器,所以你可能想尝试

bundle exec rails c

来自部署目录。

有关详细信息,请参阅Bundler deployment page

答案 1 :(得分:0)

默认情况下,Bundler在通过capistrano部署时不会将gem安装到默认的rvm环境中,而是安装到“shared / bundle”目录,以尝试适应不使用RVM的生产安装环境。如果您正在生产中使用RVM,并希望将Bundler安装到您的默认ruby / gemset(如果您要登录生产,运行rake脚本,控制台等,这非常有用),请添加以下选项到config/deploy.rb

set :bundle_dir, ""
set :bundle_flags, ""

这将删除“ - deploy”(以及“--quiet”,您可能想要或不想保留)和--path标志,这会导致Bundler尝试将所有内容打包好,所以现在捆绑包安装到用户的RVM环境;使您的服务器环境更像您的开发环境(根据您的需求可能有好有坏)。