我已经使用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"
答案 0 :(得分:0)
理想情况下,宝石应保持在一致的位置,以避免每次部署时重新安装宝石。因此,请尝试从配置中删除BUNDLE_PATH
(默认位置为~/.bundle
)。
我不确定bundle --deployment
是做什么的(我在文档中看不到这一点)。我在部署脚本中使用类似这样的命令:
after :'deploy:update_code' do
run "cd #{release_path} && bundle install --without test cucumber development"
end