Problem z cache_classes

Witam

mam taki problem

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

jakieś pomysły?

zobacz czy nie ma statycznych plików wygenerowanych

masz na mysli tmp/cache ??

jezeli tak to folder jest pusty

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)

W jakim środowisku pracujesz? Jak robisz restart aplikacji, jaka to wersja rails ?

rails 2.3.4
środowisko produkcyjne
w developerskim jest ten sam problem jezeli ustawie cache_classes = true,
wiec problem lezy w cachowaniu klas

znalazłem jeszcze coś takiego:
[url=http://www.litespeedtech.com/support/forum/showthread.php?t=2493]link[/link]

aplikacja domyślnie działa na thinie, więc spróbowałem ją odparlić na mongrelu na i oczywiscie na webbricku wczesniej
zaskocze was - dalej to samo :stuck_out_tongue:

EDIT:

restart aplikacji robilem na różne sposoby:

ctrl-c na webbricku
touch tmp/restart.txt na thinie
kill PID dla wszystkich konfiguracji
restart-app “nazwa aplikacji” na thinie

to ostatnie oczywiscie na hostingu megiteam
nie wiem jak wewnetrznie dziala ten mechanizm, ale podejrzewam, że podobnie do toucha…

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 :wink: 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 :wink: 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 :stuck_out_tongue: :smiley:

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 :slight_smile:

rada na przyszłość:

jak używacie activeScaffolda pamiętajcie żeby nie kopiować wszystkich konkrolerów jak leci

dzięki wszystkim za pomoc :slight_smile: