Для того, чтобы логика JavaScript контроллера не входила в стандартную application.js
и была включена только соответствующим контроллером, я помещаю ее в свой собственный файл .js и включаю ее на основе имени контроллера из макета как например:
<%= javascript_include_tag "application", params[:controller] %>
Это прекрасно работает, но когда я развертываю приложение в рабочей среде (я использую Capistrano и у меня настроена задача предварительной компиляции), конвейер ресурсов не прекомпилирует ни один из специфичных для контроллера файлов JS. Я предполагаю, что это потому, что на мой настоящий файл JavaScript не ссылаются директивы require в application.js.
Как мне справиться с этим, не перемещая JS для моего контроллера обратно в application.js или явно ссылаясь на него из application.js?
Есть ли какой-нибудь способ указать конвейеру ресурсов предварительно скомпилировать дополнительные файлы списка? Как я могу вручную предварительно скомпилировать определенный файл на производстве?
Обновление
Поскольку получается , вы можете указать отдельные файлы здесь в вашем config/environments/production.rb
:
config.assets.precompile += %w( achievements.js )
... или я просто продолжил и капризно добавил его для каждого файла JavaScript:
config.assets.precompile += %w( *.js )