誰かがコメントで述べたように、アセット パスにハッシュを追加することは、アセット パイプラインのデフォルトの部分です。
本番環境では、Rails は各ファイル名に MD5 フィンガープリントを挿入して、ファイルが Web ブラウザーによってキャッシュされるようにします。
アセット パイプラインでのフィンガープリンティングの詳細については、こちらをご覧ください。Rails はSprocketsを使用してアセットをコンパイルします。フィンガープリンティングは、Sprockets プロセスの一部として行われます。
Sprockets のfind_asset
メソッドを使用して、アセットへの論理パスを渡してSprockets::BundledAsset
インスタンスを取得できます。例えば
[1] pry(main)> Rails.application.assets.find_asset('application.js')
=> #<Sprockets::BundledAsset:0x3fe368ab8070 pathname="/Users/deefour/Sites/MyApp/app/assets/javascripts/application.js", mtime=2013-02-03 15:33:57 -0500, digest="ab07585c8c7b5329878b1c51ed68831e">
digest_path
このオブジェクトを呼び出しMD5
て、アセットに追加された合計を取得できます。
[1] pry(main)> Rails.application.assets.find_asset('application.js').digest_path
=> "application-ab07585c8c7b5329878b1c51ed68831e.js"
この知識があればdigest_path
、アプリケーション内の任意のアセットに対して を返すヘルパーを簡単に作成し、.js.erb
ファイル内からこのヘルパーを呼び出すことができます。