Jak wygląda Twoja codzienna praca z RoR'em?

Jestem ze środowiska PHP i nie znam się na railsach. Jakiś czas temu zrobiliśmy z drużyną zuchów www.springloops.com
Taki hositng svn który pozwala w łatwy sposób deployować aplikacje na szereg serwer i je potem aktualizować cliciem. Jest to narazie ogólne i obsłuży wszystko. Co także oznacza ze nie robi wszystkiego.

Chcemy teraz zrobić krok w stronę RoR’a. Rozmawiałem z Danielem z Jarmarku (webankieta.pl) i polecił mi to forum. Mam pare pytan do Was:

  1. Co robisz jak zaczynasz projekt (sciagasz aktualnego ror’a?, wrzucasz go do svna?, ustawiasz ignory na odpowiednie pliki?,…)?
  2. Co robisz jak pierwszy raz wrzucasz projekt na serwer (wrzucasz pliki?, ustawiasz chomody?, odpalash rake?)?
  3. Co robisz za kazdym razem gdy aktualizujesz aplikację (wylaczasz strone?, wybierasz pliki jakie sie zmieniły?, uruchamiasz rake?)?
  4. Z jakich serwrów korzystasz (developersiego i produkcyjnego, czy moze takze z testowego)? Jak wygladają roznice w Twoim zachowaniu pomiedzy tymi serwerami?
  5. Czy uzywasz Capistrano? Jesli tak, jakie są Twoje doświadczenia z Capistrano?

Daniel robi tak:
dwa pierwsze punkty NIGDY nie wystepuja (moj przypis: chodzi o wybieranie plików jakie sie zmienily i wrzucanie ich po ftp). zamiast tego sa zrodla checkoutniete z repozytorium.
W railsach jeden z katalogow w projekcie jest przeznaczony aby byl docrootem wirtualki w ktorej jest dana aplikacja - zatem zrodla projektu to cala aplikacja od css/html po baze danych (migracje)

Przystępując do akutalizacji oczywiscie zamykam dzialajaca aplikacje (czyli wychodze z mongreli) i zamykam jeszcze kilka powiazanych rzeczy (przetwarzanie w tle itd).
Potem:

  • aktualizacja via cvs/svn up,
  • rake migrate (o ile jest taka potrzeba) i to wlasciwie tyle czyli update z repo akutalizauje aplikacje, a migrate aktualizuje baze danych.

Dzięki za pomoc.

Cóż mogę tylko potwierdzić, tak powyżej to moje słowa :wink:

  1. Co robisz jak zaczynasz projekt (sciagasz aktualnego ror’a?, wrzucasz go do svna?, ustawiasz ignory na odpowiednie pliki?,…)?

Ja zazwyczaj uzywam ror w najnowszej wersji stablinej (sciagam z gemow).

  1. Co robisz jak pierwszy raz wrzucasz projekt na serwer (wrzucasz pliki?, ustawiasz chomody?, odpalash rake?)?

Zrodla aplikacji zawsze z SVN, ewentualnie dostosowuje chmody w public (pliki, ktore serwuje serwer).

  1. Co robisz za kazdym razem gdy aktualizujesz aplikację (wylaczasz strone?, wybierasz pliki jakie sie zmieniły?, uruchamiasz rake?)?

Zazwyczaj stop serwera, SVN update, migracje - jezeli jest taka potrzeba, zazwyczaj czyszczenie cache’y, tempow, sesji itd, wlasne zadania rakowe jezeli sa potrzebne.

  1. Z jakich serwrów korzystasz (developersiego i produkcyjnego, czy moze takze z testowego)? Jak wygladają roznice w Twoim zachowaniu pomiedzy tymi serwerami?

Szczerze mowiac do developerki uzywam tego co akurat odpali mi ./script/server - zazwyczaj Mongrel (bez roznicy czy jest to Webrick czy Mongrel), Mongrel jest wyraznie szybszy.

  1. Czy uzywasz Capistrano? Jesli tak, jakie są Twoje doświadczenia z Capistrano?

Szczerze mowiac jeszcze nie ale to dlatego, ze nie mialem takiej potrzeby ale przymierzam sie.

Ja uzywam Capistrano - poza sporadycznymi przypadkami sprawa aktualizacji aplikacji ogranicza sie do komendy rake remote:deploy (rake remote:deploy_with_migrations)

Polecam jeszcze Piston jako zamiennik svn:externals do zarzadzania pluginami.

  1. Co robisz jak zaczynasz projekt (sciagasz aktualnego ror’a?, wrzucasz go do svna?, ustawiasz ignory na odpowiednie pliki?,…)?

  2. Co robisz jak pierwszy raz wrzucasz projekt na serwer (wrzucasz pliki?, ustawiasz chomody?, odpalash rake?)?

  3. Co robisz za kazdym razem gdy aktualizujesz aplikację (wylaczasz strone?, wybierasz pliki jakie sie zmieniły?, uruchamiasz rake?)?

  4. Z jakich serwrów korzystasz (developersiego i produkcyjnego, czy moze takze z testowego)? Jak wygladają roznice w Twoim zachowaniu pomiedzy tymi serwerami?

  5. Czy uzywasz Capistrano? Jesli tak, jakie są Twoje doświadczenia z Capistrano?

  6. Aplikacja nad ktora pracuje ma obecnie 9 tys linii kodu (razme z rhtmlem), dziala na wersji 1.2.3, korzystam z lighttpd + fastcgi, bylo by raczej ciezko pisac ja uzywajac edge rails :slight_smile: nie ustawiam ignorow, w zasadzie obecnie pracuja 3 wersje aplikacji, kazda codzienninie jest updejtowana z svn’a, 1 jest jako poligon i 2 sa w ciaglym uzytku

  7. svn up projekt, rake db:migrate, chmody… standardowy to wystarczy

  8. Jesli aktualizacja musi byc natymiastowa to po prostu svn up ./ a potem killall dispatch.fcgi, najszybsze odswiezenie kodu :slight_smile:

  9. Poligon korzysta z developerskiego, reszta na production z wlaczonym memcached na sesje, roznice sa takie ze system developerski nie wysyla zadnych maili i smsow, wszystko po prostu leci do log’a oraz sesje nie sa cechowane

  10. Planuje, przyszla wersja aplikacji bedzie juz prawdopodobnie korzystac z capstrino, mongrel + balancer, i edge rails

Do wszystkiego 1-3 (deployment, backupy bazy, start/restart procesów mongrela wybranej aplikacji, itd) używam Capistrano.
Svn, typowo z konsoli + opisy do każdej akcji. Ignory glownie na zbedne developerskie pliki i katalogi.

Co do 1. posilkowalem sie http://clarkware.com/cgi/blosxom/2007/01/18#ManagingVersionsWithCap

  1. Tylko Nginx, identyczne srodowisko produkcyjny serwer i lokalny developerski.
  2. Idealny do wszystkiego.

Dodatkowo, wszelkie monity na Jabera, (musze dorobic jeszcze, “na zyczenie” via capistrano)