Как предотвратить кэширование актива Rails Asset Pipeline в режиме разработки? - PullRequest
1 голос
/ 19 марта 2012

Я добавил собственный движок для HAML в config / initializers.

Когда я посещаю http://127.0.0.1:3000/assets/page.html, он успешно отображает страницу.

# page.html.haml

!!! 5
%html{:lang => "en"}
  %head
    = stylesheet_link_tag 'application'
    = javascript_include_tag 'application'

Проблема в том, что Rails кажетсякэшировать актив html.Когда я добавляю или удаляю файл из манифеста application.js, он не обновляется до тех пор, пока я не остановлю сервер Rails и не выполню rake tmp:clear.Альтернатива - прикоснуться к файлу application.js.У меня установлена ​​config.assets.debug = true, потому что я предпочитаю видеть отдельные файлы / папки в Chrome DevTools, а не один большой application.js файл.

Есть ли способ исключить кэширование определенных ресурсов во время разработки.

Просто для повторения - проблема заключается в кэшировании HTML, изменения в манифесте отражаются при посещении http://127.0.0.1:3000/assets/application.js.

1 Ответ

2 голосов
/ 19 марта 2012

Грубое решение заключается в добавлении некоторых атрибутов depends_on в файл haml:

# page.html.haml
#= depend_on application.js
#= depend_on application.css
!!! 5
%html{:lang => "en"}
  %head
    = stylesheet_link_tag 'application'
    = javascript_include_tag 'application'

Это должно принудительно регенерировать актив при изменении файла application.js.

Есть несколько пещер с этим. Имена файлов должны быть именами в исходном дереве. Предполагается, что вы можете использовать # для комментариев в вашем HAML-рендерере (я не знаю HAML, поэтому я не уверен). Я также не совсем уверен, как это работает с пользовательским движком. Кроме того, лучшим решением было бы иметь собственные отслеживания зависимостей движка HAML, но я не знаю, как это сделать.

Подробнее см. звездочки

...