コマンドrake assets:clean
が実際に何をするのかを誰かに説明してもらえますか?残念ながらRailsガイドは言及していません。コマンドrake assets:cleanup
もあります。違いは何ですか?
さらに、誰かが本番環境でrake assets:precompile
を実行する必要があるのはいつか教えてもらえますか。すべてのアプリケーションファイルを運用サーバーに展開した後、サーバーコンソールで実行しますか?または、ローカルマシンでprecompile
してから、すべてのファイルをデプロイしますか?
皆さんありがとう
ローカルマシンでプリコンパイルする場合、これらの生成されたアセットをリポジトリにコミットして、デプロイを続行できます。本番マシンでコンパイルする必要はありません。
しかし、問題が発生します。ソースファイル(coffescript/scss)を変更すると、代わりにプリコンパイル済みファイルを提供するため、アプリは変更を取得しません。 rake assets:clean
は、これらのプリコンパイル済みファイルを削除します。
私のプロジェクトでは、資産はデプロイメントの一部としてプリコンパイルされています。 Capistranoは非常に簡単です。
また、rake assets:cleanup
。
実行rake assets:clobber
実際に資産をきれいにする。 http://www.dixis.com/?p=735
Sergioの答えは、Rails 3)で完全に正解でした。rake assets:clean
は、以前にpublic/assets
ディレクトリにプリコンパイルされていたすべてのアセットを削除しました。
Rails 4)では、rake assets:clobber
を実行して同じことを行います。
次の構成でrake assets:precompile
を実行した場合(ステージングおよび実稼働でデフォルトでオンになっています):
# config/environments/production.rb
config.assets.digest = true
アセットをコンパイルすると、タイムスタンプが付けられます。これは、古いアセットをそのままにして、新しいアセットをコンパイルできることを意味します。通常、実稼働環境でこれを行いたいので、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
によって実行されるようになりました。 Capfileにrequire 'capistrano/Rails/assets'
を追加すると、このcap-taskを取得できます。私のcapistranoバージョンはv3.2.1です。