加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 如何在Rails资产管道中确定给定资产的MD5摘要

发布时间:2020-12-16 23:34:21 所属栏目:百科 来源:网络整理
导读:我正在Ruby on Rails 3.1项目中编写一个富含Javascript的应用程序,并使用Handlebars作为我的JS模板框架.我正试图找出一种方法来动态地将资产的MD5摘要(在生产中的资产预编译期间生成)附加到我的Handlebars模板内的标签.我希望有一个哈希,资产路径作为密钥,MD
我正在Ruby on Rails 3.1项目中编写一个富含Javascript的应用程序,并使用Handlebars作为我的JS模板框架.我正试图找出一种方法来动态地将资产的MD5摘要(在生产中的资产预编译期间生成)附加到我的Handlebars模板内的标签.我希望有一个哈希,资产路径作为密钥,MD5摘要作为值,但我找不到.

一个理想的解决方案是将Ruby中的哈希值传递给Javascript,并定义一个Handlebars帮助程序,它将自动将MD5摘要附加??到资产的“src”属性.

有没有人试图做类似的事情?必须有一种方法可以在Rails中使用Javascript模板,并且还可以获得资产指纹识别的好处.

解决方法

正如评论中提到的那样,将哈希附加到资产路径是资产管道的默认部分.

In production,Rails inserts an MD5 fingerprint into each filename so that the file is cached by the web browser

您可以在资产管道here中阅读有关指纹识别的更多信息.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文件中调用此帮助程序.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读