6

マルチサーバー環境に Rails アプリをデプロイしています。アプリはアセット パイプラインを使用し、アセットは s3 から提供されています。デプロイ先の各サーバーで assets:precompile を実行すると、すべて正常に動作します (必要な assets/manifest.yml が各ボックスで生成されます)。

問題は、これが非常に非効率的に感じられることです。サーバーの 1 つをプライマリとして指定し、そのボックスで assets:precompile のみを実行してみました。現在の問題は、他のサーバーに assets/manifest.yml のコピーがないことです。

解決策には、生成された assets/manifest.yml ファイルをすべてのボックスで共有する最も簡単な方法を見つけることが含まれると思います。

他の人はこの状況をどのように処理しますか?

ご協力いただきありがとうございます。

4

3 に答える 3

0

より良い提案は、Capistrano 3 (先週リリース) にアップグレードすることかもしれません。これは一般的に高速であり、Rails プラグインはより適切にモジュール化されています。gem にあるrails/assets拡張機能capistrano-railsは単純です (必要な機能はまったくありませんが、より単純です)。また、gem を移行サポートに使用し、アセット パイプライン タスクをプロジェクトにコピー/変更して、必要に応じて変更することができます。

また、Capistrano 3roles(:web)では、たとえば によってサーバーのリストを取得できます。これはサーバー オブジェクトのリストを返します。そのため、他のサーバーのリストにアクセスできる 1 つのサーバーに限定されたタスクを記述し、rsync を実行できます。 LAN (または WAN) 経由でアセットを残りのマシンと同期します。

于 2013-10-16T07:37:10.000 に答える