Serwer produkcyjny a update z "zewnątrz"(cron)

Słuchajcie, mam problem :slight_smile:

Postawiłem sobie serwer produkcyjny ( konkretnie: script/server -e production -d -p 80 ) na mongrelu. Wszystko działa bardzo dobrze, jednak używam w swojej aplikacji pluginu whenever.

Moje pytanie brzmi w jaki sposób po wywołaniu komend z crontaba (konkretnie dodawanie rekordów do bazy) zrobić update na serwerze produkcyjnym? Puki co muszę wchodzić na SSH, wpisywac killall ruby i stawiać na nowo w w/w komendzie serwer. Wtedy uaktualniają się zmiany. Teraz to trochę zautomatyzowałem, tworząc crona do tego, ale moim zdaniem nie tak to działa, więc chciałbym zapytac o poprawną drogę :wink:

Pozdrawiam.

Zależy co rozumiesz przez “update na serwerze produkcyjnym”. Jeśli chodzi tylko o to, żeby serwer “zobaczył” nowe rekordy, to nie musisz nic robić.

Zmienione dane są widoczne w ActiveRecord natychmiast bez względu na to skąd zmiana pochodzi. Problem może istnieć jeśli wczytujesz te dane raz przy starcie aplikacji i trzymasz w cache. W takim wypadku odpowiedź jest prosta: nie rób tego. Jeśli Twojej aplikacji wystarcza jeden mongrel to spokojnie może takie dane wczytywać per-request.

Sposób deploymentu, który pokazałeś słabo się sprawdza przy poważniejszych aplikacjach i częstych zmianach w kodzie. Przestaw się na pasażera (passenger), wtedy reload aplikacji to ‘dotknięcie’ (man touch) jednego pliku. Zainteresuj się też capistrano - raz okiełznane pozwala na błyskawiczny deployment.