Aby zachować specyficzną dla kontrolera logikę JavaScript poza standardową wersją application.js
i mieć ją tylko kontroler, umieszczam go w osobnym pliku .js i dołączam to na podstawie nazwy kontrolera z układem takie jak:Strategia Rails 3.1 do wstępnego kompilowania specyficznych dla kontrolera zasobów JS
<%= javascript_include_tag "application", params[:controller] %>
to działa dobrze, ale gdy wdrożyć aplikację do produkcji (używam Capistrano i posiada pre kompilacji zadanie utworzenia), przy czym Potok zasobów nie prekompiluje żadnego ze specyficznych dla kontrolera plików JS. Zakładam, że dzieje się tak dlatego, że mój aktualny plik JavaScript nie jest przywoływany przez wymagające dyrektywy w pliku application.js.
Jak sobie z tym poradzić bez przenoszenia sterownika JS z powrotem do aplikacji application.js, lub jawnie odwołując się do niego z pliku application.js?
Czy jest jakiś sposób, aby powiedzieć potoku aktywów, aby wstępnie skompilować dodatkowe pliki list? Jak mogę ręcznie skompilować konkretny plik podczas produkcji?
Aktualizacja
jak to turns out można określić poszczególne pliki tutaj w swoim config/environments/production.rb
:
config.assets.precompile += %w(achievements.js)
... lub po prostu poszedł do przodu i kapryśnie dodania go do każdego pliku JavaScript:
config.assets.precompile += %w(*.js)
to powinno być naprawdę automatyczne! –
Warto zauważyć, że dodanie plików scss/coffee do listy precomile NIE DZIAŁA! (I nie rzucajcie też błędu!). Musisz podać tylko nazwę z rozszerzeniem .js/css. –