Чтобы исключить логику 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 )