【问题标题】:Can't access Rails console for app deployed on Passenger using Capistrano & RVM无法访问使用 Capistrano 和 RVM 部署在乘客上的应用程序的 Rails 控制台
【发布时间】:2011-03-16 21:08:08
【问题描述】:

在终于设法让我的 Rails 应用程序正常运行后,我遇到了一个稍微令人困惑的问题。我已经将我的 Rails 3.0.5 应用程序部署到带有 Capistrano、RVM 和 Nginx 的 Ubuntu 10.10 服务器。一切运行良好,我可以确认 Rails 正在运行,因为我正在从数据库中获取数据和有意义的日志消息。

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

rails c

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

但是它已安装,否则我的应用程序将无法运行!我只安装了两个 RVM gemset,全局的一个和一个称为“rails305”。尝试

rvm gemset use rails305

然后

gem list

没有显示我的应用程序需要的任何 gem,但是必须安装它们,因为 1) 没有它们,应用程序将无法运行,并且 2) 在我的 Capistrano 部署脚本中,bundler 安装它们(到那个 gemset)。所以这个问题显然与 RVM 有关,但我无法弄清楚它是什么......有人有什么想法吗?

【问题讨论】:

  • 听起来,Passenger 使用的 ruby 与您的终端会话不同。您是否安装了多个红宝石?您是否关注了来自here 的 RVM/乘客信息?您可以通过查看~/.rvm/gems 快速查看所有 ruby​​/gemset 组合。
  • 不,目前只有一颗红宝石。我在这些文件夹中四处寻找,但仍然找不到宝石 - 但是 irc 的 rvm 频道上的某个人给了我答案(发布在下面)

标签: ruby-on-rails rubygems capistrano rvm


【解决方案1】:

Capistrano 似乎使用了 bundler,所以你可能想尝试一下

bundle exec rails c

来自部署目录。

请参阅Bundler deployment page 了解更多信息。

【讨论】:

  • 是的!这很好用(尽管我在末尾添加了“生产”以使其加载该环境)-谢谢! :-)
【解决方案2】:

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

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

这将删除“--deployment”(和“--quiet”,您可能想保留也可能不想保留)和--path 标志,它们会导致bundler 尝试很好地打包所有内容,因此bundler 现在将安装到用户的 RVM 环境;让您的服务器环境更像您的开发环境(取决于您的需求,这可能是好是坏)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-10-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多