正如评论中提到的那样,将哈希附加到资产路径是资产管道的默认部分。
在生产环境中,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"
With this knowledge you can easily create a helper to return the digest_path
for any asset in your application, and call this helper from within your .js.erb
files.