Я предпочитаю не конкатенировать файлы JavaScript в режиме разработки, а обслуживать их как отдельные файлы. Поэтому я настроил:
development.rb:
config.assets.compress = false
config.assets.debug = true
config.assets.compile = true
В каталоге my/app/assets/javascript у меня есть:
- reviews.js
- обзоры /
- foo.js
- bar.js
reviews.js:
//= require jquery
//= require jquery_ujs
//= require_tree ./reviews
Я включаю JavaScript, используя <%= javascript_include_tag "reviews" %>
в своем макете. Сгенерированная страница правильно ссылается на три сценария отдельно, а reviews.js
по существу пуст. Пока все хорошо.
Теперь, когда я прекомпилирую свои активы для производства с помощью rake assets:precompile
, три файла JavaScript объединяются в reviews.js
. Это нормально для производства, но теперь в режиме разработки конкатенированный reviews.js
служит дополнительно для двух отдельных файлов.
Конечно, это приводит ко всем видам неприятных ошибок при разработке, потому что теперь содержимое foo.js
и bar.js
выполняется дважды, один из них в потенциально более ранней версии в reviews.js
.
Как я могу убедиться, что Rails не использует предварительно скомпилированные активы в режиме разработки?