Capistrano を使用して、複数の Rails アプリを単一の EC2 インスタンスにデプロイしてきました。アプリはすべて Apache + Passenger で提供されます。それらのほとんどを形成する展開フェーズは次のとおりです。
-- コードを取得し、メイン アプリ ディレクトリの「releases/[timestamp]」サブディレクトリにステージングします。
-- 段階的なリリースのためにバンドラーを実行します
-- 段階的リリースの移行を実行します
-- ステージ リリース用のアセット コンパイル ("assets:precompile") rake タスクを実行します。
--delayed_job タスク キュー処理デーモンとその他のバックグラウンド プロセスを再起動します。
-- ステージングされたリリースを "current" (パッセンジャー Web ルート) にシンボリック リンクします。
-- パッセンジャーを再起動します (アプリ ディレクトリの「tmp/restart」をタッチして)
これは非常に標準的な Rails のデプロイ手順です。その大きなボトルネックが、それを必要とする各タスクのレール環境のロードであることに気付きました。私の大きなアプリの 1 つで、環境の読み込みに 40 秒以上かかり、それが Rails 環境を必要とする n 個のタスク (バンドラー、マイグレーション、アセットのコンパイル、delayed_job デーモンの実行) に対して n 回繰り返されます。これが素朴な質問である場合は申し訳ありませんが、これらすべてのタスクに対して一度だけ環境をロードする簡単な方法があるかどうか疑問に思っていました (できれば、これらすべてのタスク/ジョブの実装をロードする単一の rake タスクに統合するよりも簡単です)環境)。