生产服务器上的Bundler找不到任何宝石

时间:2013-05-10 01:32:51

标签: ruby-on-rails ubuntu nginx capistrano passenger

我使用passenger + nginx来部署rails应用程序。我遇到的问题是Bundler在尝试安装时没有找到任何宝石。例如,我收到此错误:

Could not find i18n-0.6.1 in any of the sources (Bundler::GemNotFound)

如果我登录我的生产盒并手动安装gem,则错误消失,但是找不到所需的下一个gem。为什么是这样?我使用rvm 。这是我的配置文件:

worker_processes  1;

events {
    worker_connections  1024;
}


http {
    passenger_root /usr/local/lib/ruby/gems/2.0.0/gems/passenger-4.0.0.rc4;
    passenger_ruby /usr/local/bin/ruby;

    include       mime.types;
    default_type  application/octet-stream;

    sendfile        on;

    keepalive_timeout  65;

    server {
        listen       80;
        server_name  .treadforth.com;
        root /var/www/Tread-Forth/current/public;
        passenger_enabled on;
    }
}

编辑:我应该补充说nginx是以root身份运行的。这可能是一个路径问题,但手动安装gems允许bundle识别它们已安装,所以我不确定。

1 个答案:

答案 0 :(得分:1)

如果您使用的是capistrano,则需要将以下行添加到config/deploy.rb

require 'bundler/capistrano'

除非您添加,否则capistrano在部署时不会在远程服务器上运行bundle install。它还添加了--deployment选项,可以在shared/bundle下安装所有宝石,从而为您的应用创建一个漂亮的独立宝石环境。