Rake アセットに関する混乱: Rails のアセット パイプラインのクリーン / クリーンアップ
-
27-10-2019 - |
質問
誰かコマンドが何なのか説明してもらえませんか rake assets:clean
本当にそうですか?残念ながら、Rails ガイドにはそれについて言及されていません。というコマンドもあります rake assets:cleanup
. 。違いは何ですか?
さらに、いつ走らなければならないのか誰か教えてください rake assets:precompile
生産中。すべてのアプリケーション ファイルを運用サーバーにデプロイした後、サーバー コンソールで実行しますか?それとも私は precompile
ローカルマシン上ですべてのファイルをデプロイしますか?
皆さんありがとう
解決
注:この回答はRails3固有のものです。Rails 4以降については、こちらで他の回答をご覧ください。
ローカルマシンでプリコンパイルする場合は、これらの生成されたアセットをリポジトリにコミットして、展開を続行できます。実稼働マシンでコンパイルする必要はありません。
しかし、問題が発生します。ソースファイル(coffescript / scss)を変更すると、代わりにプリコンパイルされたファイルが提供されるため、アプリは変更を取得しません。rake assets:clean
は、これらのプリコンパイル済みファイルを削除します。
私のプロジェクトでは、アセットはデプロイメントの一部としてプリコンパイルされています。Capistranoはそれを非常に簡単にします。
また、rake assets:cleanup
について聞いたことがありません。
他のヒント
rake assets:clobber
を実行して、実際にアセットをクリーンアップします。
http://www.dixis.com/?p=735
Sergioの答えはRails3で完全に正しかった。rake assets:clean
は、以前にpublic/assets
ディレクトリにプリコンパイルされていたすべてのアセットを削除しました。
Rails 4では、rake assets:clobber
を実行して同じことを行います。
次の構成でrake assets:precompile
を実行する場合(ステージングと本番環境ではデフォルトでオンになっています):
ジェネラコディセタグプレ
コンパイルしたアセットにはタイムスタンプが付けられます。これは、古いアセットをそのままにして、新しいアセットをコンパイルできることを意味します。通常、これを本番環境で実行して、precompile
を実行している間もWebサイトが古いファイルにアクセスして新しいファイルを作成するようにします(新しいcss / javascriptを追加したため)。ここで、使用されなくなった古いファイルを削除する必要があります。clean
は、新しいアセットをそのままにして、プリコンパイルされたアセットの古いバージョンを削除します。
rake assets:clean
コンパイルされたアセットを削除します。運営されているのは、 cap deploy:assets:clean
コンパイルされたアセットを通常はリモート サーバーから削除します。
cap deploy:clean
古いリリースを通常はリモート サーバーから削除します。そうではない rake assets:clean
レーキ != キャップ
rake assets:clean
がcap deploy:cleanup_assets
によって実行されるようになりました。require 'capistrano/rails/assets'
をCapfileに追加すると、このcap-taskが取得されます。私のcapistranoバージョンはv3.2.1です。
追跡されていないファイルを、ファイルの場合はgit clean -f
で、ディレクトリの場合はgit clean -f -d
でクリーンアップします