Wolę niż łączenie plików JavaScript w trybie programowania, ale serwuję je jako pojedyncze pliki. Więc skonfigurowane:Jak uniknąć prekompilowanych zasobów udostępnianych w trybie deweloperskim?
development.rb:
config.assets.compress = false
config.assets.debug = true
config.assets.compile = true
W moich/app/assets/javascript katalog mam:
- reviews.js
- opinie/
- foo.js
- bar.js
reviews.js:
//= require jquery
//= require jquery_ujs
//= require_tree ./reviews
I obejmują JavaScript używając <%= javascript_include_tag "reviews" %>
w moim układzie. Wygenerowana strona poprawnie odwołuje się do trzech skryptów pojedynczo, a reviews.js
jest zasadniczo pusta. Jak na razie dobrze.
Teraz, gdy prekompiluję moje zasoby do produkcji przy użyciu rake assets:precompile
, trzy pliki JavaScript są łączone w reviews.js
. To wszystko jest w porządku dla produkcji, ale teraz, w trybie programowania, połączony reviews.js
jest obsługiwany dodatkowo do dwóch pojedynczych plików.
Oczywiście, prowadzi to do wszystkich nieprzyjemnych błędów podczas opracowywania, ponieważ teraz zawartość foo.js
i bar.js
jest serwowana dwukrotnie, jeden z nich w potencjalnie starszej wersji w reviews.js
.
Jak mogę się upewnić, że Railsy nie używają prekompilowanych zasobów w trybie deweloperskim?
Dzięki za radę, Usunąłem skompilowane pliki lokalnie i skonfigurowany tak, aby zostały one opracowane na git push to Heroku. –
To była odpowiedź, której potrzebowałem. To prawda, że nie potrzebuję tych wstępnie skompilowanych zasobów lokalnie, podczas gdy ja się rozwijam, ale ponieważ uczę się konfigurować potok zasobów, faktycznie potrzebuję ich, aby przetestować mój tryb produkcji lokalnie, zamiast czekać na niespodziankę na Heroku! Na razie zmienię nazwę katalogu (lub umieściłem je w gałęzi git), ale wciąż jest to wstyd, jest to jeszcze jedna rzecz, o której muszę pomyśleć, a nie opcja konfiguracyjna w środowisku programistycznym, która mówi "ignoruj publiczną/aktywa" katalog ", na który liczyłem. – Phantomwhale
Być może będziesz musiał pamiętać o wyczyszczeniu pamięci podręcznej przeglądarki, aby przeglądarka nie używała pliku application.js przypadkowo załadowanego przed rm -rf'd public/assets –