Rails, primele 3 indicii
Am incercat in ultimele zile sa ma familiarizez cu RubyOnRails si sa incerc sa fac o aplicatie de la zero.
In mod normal primul lucru pe care il facem este tipicul HelloWorld pentru a testa mediul in care o sa dezvoltam in continuare.
Dupa un weekend on Rails, pot da urmatoarele sfaturi:
- Foloseste FastCGI!
Daca se foloseste combinatia Apache/mod_ruby sau Apache/CGI performanta aplicatiilor scrise in ruby si implicit in rails scade simtitor.
Lucrurile se schimba insa cu Lighty + FastCGI (recomandat) sau Apache cu FastCGI.
Am aflat si de SCGI (via blog.peat.org) insa nu stiu momentan daca as putea instala asa ceva intr-un mediu in care nu am acces direct la serverul web (apache in cazul meu). Se pare insa ca Lighty/SCGI este o solutie buna pentru cei care ofera hosting cu rails.
- Foloseste setup-uri asemanatoare pe masina pe care se face dezvoltarea si sistemul unde o sa publici aplicatia (production)!
Am pierdut foarte mult timp (probabil ca acum as rezolva problema mult mai repede) sa imi mut aplicatia dezvoltata pe localhost cu Lighty/FCGI pe Apache/CGI. Cautari fara raspuns pe google (nu prea se foloseste Apache/CGI?), intrebari pe #rubyonrails si intr-un final cu ajutorul unei console de debug pentru CGI (practic examinarea erorilor din fiserul de log al serverului web) am rezolvat problema, cam 5-6 ore in total. Si asta cu noroc, pentru ca dupa vreo 4 ore am decis sa ma culc putin.
Ma gandesc cat timp as fi pierdut daca foloseam windows cu WEBrick.
- Foloseste o metoda de deploy automata!
Deploy: adica publicarea aplicatiei pe net.
De cele mai multe ori, transferul prin ftp este incomod.
Daca se poate, foloseste capistrano (fost SwitchTower), daca nu cauta metode alternative, de exemplu rsync sau orice alt script care iti va muta fisierele rapid pe serverul live.
Apropos, inca nu m-am hotarat ce fel de aplicatie o sa fac (ei bine, de fapt am niste idei), insa, primii pasi cu o aplicatie dezvoltata in rails si publicata pe internet i-am facut aici – http://marks.29dots.com/main/index.