wprowadzam zmiany w aplikacji, ale niestety nie widze ich po restarcie
konkretnie, problem jest w widokach. Bo o ile nowe rzeczy w modelach helperach i kontrolerach działają
po parunastu restartach doszedłem do wnisku, że problem siedzi w config/environments/production.rb
minowicie wystarczy wpisac:
config.cache_classes = false
wiec spoko
tyle, że po kolejnym restarcie i po powrotnej zmianie do:
config.cache_classes = true
dalej mam wersje bez zmian
próbowalem zrobic toucha na wszyskich plikach aplikacji, ale wciąż bez rezultatu
a poszukiwanie innych .html’i nie zwraca nic niepokojacego
w sensie public/404.html i tym podobne no i dodatkowo kilka plików w folderach pluginów
restart memcache tez na nie wiele się zdał
podobnie przebudowa indexów w bazie (choć to akurat był słaby pomysł :P)
Na produkcji klasy sa cachowane by przy kazdym requestcie nie byly ponownie ladowane. Jednak jesli masz wlaczona ta opcje po restarcie klasy sa wczytywane i powinno trykac. Sprawdz czy napewno sie restartuje i czy nie robisz literowek w kodzie.
Od rails 2.1 Aplikacja ma włączone cachowanie klas i widoków w środowisku produkcyjnym. Wymagany jest restart aplikacji przy każdej zmianie w kodzie, po to jest środowisko developerskie Teraz jeśli ciebie dobrze rozumiem to postępujesz tak: ./script/server -e production -> f5 w przeglądarce dla http://localhost:3000/index/index -> zmiana w IndexController#index -> ctrl-c + ./script/server -e production -> f5 http://localhost:3000/index/index i nie widzisz żadnych zmian których dokonałeś czy tak ? Jest to raczje niemożliwe Jeśli restartem nazwyasz odświeżenie strony, to nie jest to prawdziwy restart. Jeśli restarem nazywasz ubicie procesu aplikacji i odpalenie nowego, to wtedy wszysto powinno być przeładowane, jeśli nie jest problem leży gdzieś indziej. Ustawienie cache_class spowoduje jedynie wyłączenie cachowania klas w środowisku produkcyjnym, każde odświeżenie strony spowoduje ponowne załadowanie wszystkich klas, nie powinno się tego robić, obniża to znacznie wydajność aplikacji.
masz mnie za idiote?
to oczywiste, że wyłączam przeglądarkę i włączam ją ponownie
a tak serio problem leżał gdzie indziej
w app/controllers miałem folder “admin” gdzie miałem plik application_controller - w zasadzie kopie tego z folderu app/controllers
i w przypadku gdy cache_classes było włączone mój ApplicationController się nadpisywał
wystarczyło usunąć application_controller.rb z admina bo i tak dziedziczę po defaultowym application_controller
rada na przyszłość:
jak używacie activeScaffolda pamiętajcie żeby nie kopiować wszystkich konkrolerów jak leci