我使用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识别它们已安装,所以我不确定。
答案 0 :(得分:1)
如果您使用的是capistrano,则需要将以下行添加到config/deploy.rb
require 'bundler/capistrano'
除非您添加,否则capistrano在部署时不会在远程服务器上运行bundle install
。它还添加了--deployment
选项,可以在shared/bundle
下安装所有宝石,从而为您的应用创建一个漂亮的独立宝石环境。