Rake アセットに関する混乱: Rails のアセット パイプラインのクリーン / クリーンアップ

StackOverflow https://stackoverflow.com/questions/9335803

質問

誰かコマンドが何なのか説明してもらえませんか 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:cleancap deploy:cleanup_assetsによって実行されるようになりました。require 'capistrano/rails/assets'をCapfileに追加すると、このcap-taskが取得されます。私のcapistranoバージョンはv3.2.1です。

追跡されていないファイルを、ファイルの場合はgit clean -fで、ディレクトリの場合はgit clean -f -dでクリーンアップします

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top