Rails 4.2 Rails.application.config.assets.version не отменяет имена файлов активов дайджеста
У меня есть приложение Rails 4.2.4 (Ruby 2.2.2), и я обслуживаю статические ресурсы через Cloudfront.
Если Cloudfront обслуживает то, что вам не нужно, есть две возможности:
- Недействительный контент в Cloudfront или
- Изменить имя обслуживаемого ресурса
Однако, когда я меняю
Rails.application.config.assets.version = '1.0'
к
Rails.application.config.assets.version = '2.0'
(в config/initializers/assets.rb)
и
генерируются одинаковые имена файлов!
Единственный способ, которым я нашел недействительным переваренный файл application.scss, заключался в добавлении некоторого фиктивного контента, чтобы спровоцировать новую контрольную сумму md5.
Что я делаю неправильно?
Не следует ли изменять новые активы .version для переваренных имен файлов?
С наилучшими пожеланиями и спасибо!
Ответы
Ответ 1
По комментарии в запросе на разрыв Rails, который я открыл, это регрессия, которая должна быть исправлена: https://github.com/rails/sprockets-rails/issues/240
Обновление. Как упоминает сансарп, одним из обходных решений, перечисленных в этой проблеме github, является использование старой версии звездочек:
gem 'sprockets', '< 3.0.0'
Другим обходным решением является использование пути к ресурсам в качестве кэширующего устройства:
# config/initializers/assets.rb
Rails.application.config.assets.prefix = "/assets/v1"
Ответ 2
Использование звездочек предыдущей версии может помочь вам получить имена файлов, как ожидалось. gem 'sprockets', '< 3.0.0'
https://github.com/rails/sprockets
Ответ 3
Если вы используете capistrano для развертывания, обязательно установите assets_prefix
в файле deploy.rb
.
set :assets_prefix, "assets/v1"