我们有一个在服务器上运行Rails 3.0.14的应用程序,该服务器同时承载暂存和生产环境(使用Debian Linux和Apache 2)。部署是使用Bundler和Capistrano通过多级扩展完成的。Apache Passenger的这两个环境都可以很好地工作,生产环境也在积极使用。
然而,由于某种原因,自上次部署以来,我们的cron脚本停止工作,因为出于某种原因,控制台不再喜欢我们的生产环境。无论我们使用什么rake
或rails
命令,我们总是得到
$ rails c
script/rails:6:in `require': no such file to load -- rails/commands (LoadError)
script/rails:6
bundle install
只是浏览所有的宝石并说"一切都很好"。但与登台环境相比,我知道共享捆绑包目录中缺少一些gem(与工作的登台环境相比)。
如何强制Bundler重新安装所有必需的gem,即使它假设一切正常?它似乎没有"强制"开关。
谢谢!
我发现了错误,但我仍然不知道这是怎么发生的。
生产树中的"railties"gem似乎被标记为已安装,但它安装的目录有一半是空的(与临时树相比)。Bundler一直坚称它安装得很好,但有一半的库文件丢失了,由于"railties"提供了命令行和脚本支持,这正是不存在的。
我仍然不明白Bundler如何以这种方式半安装gem,但至少我能够通过从暂存系统复制丢失的文件来修复这种情况。
谢谢你的评论,它们帮助我找到了正确的方向。