带有Rails 3的乘客3不会从供应商处加载宝石/

时间:2010-12-16 10:38:58

标签: ruby-on-rails ruby passenger

我已经使用Ruby 1.9.2和Passenger 3设置了一个新环境。随着Capistrano部署了一个Rails 3应用程序。 RAILS_ENV设置为暂存。

当试图启动应用程序时,Passenger抱怨缺少宝石。正在运行

bundle --deployment 

将gems安装到RAILS_ROOT / vendor,但不解决错误。

如果我将缺少的gem安装为系统gem(例如sudo gem install),则错误消失,但现在Gemfile中的下一个gem被报告为缺失。

我可以通过将我的宝石安装到系统来解决这个问题,但我想了解为什么将它们安装到供应商目录中是行不通的。我的理解是捆绑器的想法是避免必须将所有宝石都安装到系统中。

我将RAILS_ROOT / .bundle / config设置为:

BUNDLE_FROZEN: "1"
BUNDLE_PATH: vendor/bundle
BUNDLE_DISABLE_SHARED_GEMS: "1"

1 个答案:

答案 0 :(得分:0)

理想情况下,宝石应保持在一致的位置,以避免每次部署时重新安装宝石。因此,请尝试从配置中删除BUNDLE_PATH(默认位置为~/.bundle)。

我不确定bundle --deployment是做什么的(我在文档中看不到这一点)。我在部署脚本中使用类似这样的命令:

after :'deploy:update_code' do
  run "cd #{release_path} && bundle install --without test cucumber development"
end