我正在使用Rails 4.2,document指出指纹是根据已编译文件的内容计算出的md5摘要。
如果我们拿一个文件说math.inf
,则application-4c697a2e67b1a921abbdc1f753c465d8.js
是md5摘要。问题在于,我们永远无法通过从同一文件的内容生成md5来获得相同的值。
我在某处读到,这种指纹不仅基于文件,而且受链轮版本以及环境的影响。
有人可以解释或列出用于生成此指纹的内容(文件内容除外)吗?而且,如果有人可以从rails sprockets repo(最好是sprockets 2.12.5)添加参考,那将非常有帮助。
答案 0 :(得分:1)
摘要似乎建立在这里:https://github.com/rails/sprockets/blob/master/lib/sprockets/digest_utils.rb
看起来那里有很多逻辑,但这是找到答案的地方。
似乎实际的哈希是通过在ADD_VALUE_TO_DIGEST[obj.class].call(obj, digest)
方法中调用build_digest
创建的。
好问题;我在查找时学到了一些东西。
答案 1 :(得分:0)
对于Rails 4.2.x不确定其他版本是正确的
针对文件生成md5涉及三个部分(以相同顺序连接)。
在链轮2.x中(对于捆绑资产)的实际摘要计算在此处BundledAsset#L30
中完成