4

最近、ターボスプロケットの宝石https://github.com/ndbroadbent/turbo-sprockets-rails3 をrailsアプリケーションに追加しました。capistranoを使用してAmazonEC2にデプロイしています。

この作業をどのように行うことができるかについて少し混乱しています。Assets:precompileは私のローカルマシンでは機能しましたが、amazonインスタンスでは機能しませんでした。

長い話の短いcapistranoは、デプロイメントごとに新しいリリースディレクトリを作成し、public / Assetsディレクトリは空であるため、新しいリリースディレクトリを作成するたびに、assets:precompileを実行すると、すべてのアセットがプリコンパイルされます。

capistranoがassets:precompileを実行する前に、localyをプリコンパイルして、それらをgitに追加するか、最後のデプロイメントからpublic / Assetsディレクトリをコピーする必要がありますか?

最もクリーンでベストプラクティスのソリューションは何でしょうか?

/編集または、コンパイルされたアセットを共有ディレクトリに保持しますか?

4

2 に答える 2

6

私が考えることができる最も簡単な解決策は、共有/アセットディレクトリを使用してアセットを保存し、アセットがコンパイルされる前にリリースpublic/assetsディレクトリへのシンボリックリンクを作成することです。

 task :assets_precompile do
   run "ln -s #{shared_path}/assets #{release_path}/public/assets"
   run "cd #{release_path} && RAILS_ENV=production bundle exec rake assets:precompile"
 end

編集:Anjanは、deploy:assetsを使用する場合(load 'deploy/assets'Capfileにある場合)、これはデフォルトで実行されるため、よりクリーンなソリューションであると指摘しました。

于 2012-11-29T10:06:37.027 に答える
1

デプロイプロセスに静的ファイルへのシンボリックリンクが含まれている場合、Lesceの答えはより重要になります。

例:config / database.ymlは微調整したくないものであり、デプロイを必ずしも変更したくないものです...共有/アセットにそれがあると、assets:precompileが呼び出されたときに失敗します。

また、ユーザーが読み込んだ画像や添付ファイルがある場合にも機能します。

于 2013-09-14T12:14:17.157 に答える