Я предпочитаю не конкатенировать файлы 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 не использует предварительно скомпилированные активы в режиме разработки?