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'

to

Rails.application.config.assets.version = '2.0'

(в config/initializers/assets.rb)

а также

  • удалить все активы в public/assets

  • запустите «RAILS_ENV = промежуточный пакет exec rake assets: precompile»

генерируются одинаковые имена файлов!

Единственный способ, который я нашел, чтобы аннулировать обработанный файл application.scss, заключался в том, чтобы добавить некоторый фиктивный контент, чтобы спровоцировать новую контрольную сумму md5.

Что я делаю неправильно?

Не должна ли новая assets.version изменить имена переваренных файлов?

С наилучшими пожеланиями и спасибо!


person Stefan Kühn    schedule 13.09.2015    source источник
comment
Примечание. Я также добавил PR для Rails по этому поводу: github.com/rails/rails/ тянуть/22472   -  person Jordan Brough    schedule 03.12.2015


Ответы (3)


Согласно комментариям в открытом мной запросе на вытягивание Rails, это регрессия, которую необходимо исправить: https://github.com/rails/sprockets-rails/issues/240

Обновление: как упоминает sansarp, одним из обходных путей, перечисленных в этой проблеме github, является использование старой версии sprockets:

gem 'sprockets', '< 3.0.0'

Другой обходной путь — вместо этого использовать путь ресурса в качестве прерывателя кеша:

# config/initializers/assets.rb
Rails.application.config.assets.prefix = "/assets/v1"
person Jordan Brough    schedule 02.12.2015

Использование звездочек предыдущей версии может помочь вам получить ожидаемые имена файлов. gem 'sprockets', '< 3.0.0' https://github.com/rails/sprockets

person sansarp    schedule 03.12.2015

Если вы используете capistrano для развертывания, обязательно установите assets_prefix в файле deploy.rb.

set :assets_prefix, "assets/v1"
person MatayoshiMariano    schedule 29.04.2016