0

ステージング環境と本番環境 (Debian Linux と Apache 2 を使用) の両方をホストするサーバー上で、Rails 3.0.14 で実行されているアプリケーションがあります。展開は、マルチステージ拡張機能を備えた 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を強制的に再インストールするにはどうすればよいですか? 「--force」スイッチがないようです。

ありがとう!

4

1 に答える 1

0

エラーが見つかりましたが、これがどのように発生したかはまだわかりません。

プロダクション ツリーの「railties」gem はインストール済みとしてマークされているようですが、インストール先のディレクトリは (ステージング ツリーと比較して) 半分空でした。Bundler は問題なくインストールされていると主張し続けましたが、ライブラリ ファイルの半分が欠落しており、「railties」はコマンド ラインとスクリプトのサポートを提供しているため、これはまさにそこになかったものでした。

Bundler がどのようにしてこの方法で gem を半インストールできるのかはまだわかりませんが、少なくともステージング システムから不足しているファイルをコピーすることで状況を修正することができました。

すべてのコメントに感謝します。彼らは私が正しい方向を見るのを助けてくれました。

于 2012-08-30T19:37:19.220 に答える