0

我们有一个使用 Rails 3.0.14 运行的应用程序,该应用程序在托管暂存环境和生产环境(使用 Debian Linux 和 Apache 2)的服务器上运行。使用带有多级扩展的 Bundler 和 Capistrano 完成部署。两种环境都可以在 Apache Passenger 中正常工作,并且生产环境也被积极使用。

但是,由于某种原因,自上次部署以来,我们的 cron 脚本停止工作,因为控制台出于某种原因不再喜欢我们的生产环境。无论我们使用什么rakerails命令,我们总是得到

$ rails c
script/rails:6:in `require': no such file to load -- rails/commands (LoadError)
    script/rails:6

bundle install只是遍历所有宝石并说“一切都很好”。但是与登台环境相比,我知道共享捆绑目录中缺少一些宝石(与有效的登台环境相比)。

我如何强制 Bundler重新安装所有必需的 gem,即使它假设一切都很好?它似乎没有“--force”开关。

谢谢!

4

1 回答 1

0

我发现了错误,但我仍然不知道这是怎么发生的。

似乎生产树中的“railties”gem 被标记为已安装,但安装它的目录是半空的(与暂存树相比)。Bundler 一直坚持说它安装得很好,但是一半的库文件丢失了,而且由于 'railties' 提供了命令行和脚本支持,这正是不存在的。

我仍然不明白 Bundler 如何以这种方式半安装 gem,但至少我能够通过从暂存系统复制丢失的文件来解决这种情况。

感谢您的所有评论,他们帮助我找到了正确的方向。

于 2012-08-30T19:37:19.220 回答