Ответ 1
Как упоминалось в комментариях, добавление хэша в пути к активам является частью по умолчанию для конвейера активов.
В процессе производства Rails вставляет отпечаток MD5 в каждое имя файла, так что файл кэшируется веб-браузером
Подробнее о снятии отпечатков пальцев в конвейере активов здесь. Rails использует Sprockets для компиляции активов. Фингерпринт входит в состав процесса Sprockets.
Вы можете использовать метод find_asset
Sprockets ', передавая логический путь к вашему ресурсу, чтобы получить экземпляр 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
.