VChris eredeti hozzászólása
mitől ennyivel gyorsabb a munka RoR alapon?
Igen, alapvetően a keretrendszerek lényege, hogy gyorsabbá teszik a fejlesztést. A RoR pedig a legjobb keretrendszer amit ismerek. Tegyük fel, hogy van egy program, ami az alkalmazottaidról adatokat tartalmaz, mondjuk név, születésnap, alkalmazás dátuma, emailcím, van-e felesége és van-e gyereke. Szeretnél egy programot, ami ezt adatbázisban tárolja, és szerkesztheted, illetve megmutathatod.
Ezt RoR-ban elkészíteni:
Kód:
rails alkalmazottaim
cd alkalmazottaim
script/generate scaffold
Alkalmazott nev:string szuletesnap:date alkalmazas_datuma:date emailcim:string feleseg:boolean gyerek:boolean
rake db:migrate
Ez létrehoz neked egy view-t amivel megnézheted, egyet amivel szerkesztheted, egy listázást és egy törlést. Felépíti az adatbázist anélkül, hogy bármit is kellene csinálj (ez a rake db:create és migrate, attól függően, hogy létezik-e az adatbázis) és elvégiz az adatbázisműveleteket.
Mondjuk szeretnéd, hogy a nevet kötelező legyen megadni, és a formodat e szerint kellene validálni:
Kód:
validates_presence_of :nev
De mondjuk akarsz valami hibaüzenetet is adni, ha valaki nem adja meg a nevét:
Kód:
validates_presence_of :nev,
:message => "Add meg a neved ember! Há kinek magyarázok én?"
Tegyük fel, hogy a validálással ennél tovább akarsz menni, és mondjuk regexpel akarod összevetni, mondjuk az emialt:
Kód:
validates_format_of :emailcim,
:with => /\A([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})\Z/i,
:message => "Most kezded nem érteni. :)"
Tegyük fel, hogy az e-mail címet üressen is lehet hagyni, és csak akkor érdekel validáljuk, ha nincs felesége:
Kód:
validates_format_of :emailcim,
:with => /\A([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})\Z/i,
:message => "Most kezded nem érteni. :)",
:allow_blank => true, :if => :feleseg
Tegyük fel, hogy ennyi elég is és kész vagyunk a production módra. De paraméter nélküli rails alkalmazottaim parancs miatt most SQLi adatbázis van, mivel az a default. Beírjuk a beállításokat a MySQL-höz a config/database.yml-be, lementjük, majd:
Passengernél ez után a httpd.conf-ban átírjuk a
RailsEnv development
sort erre:
RailsEnv production
És máris production modeban vagyunk.
A hivatalos oldalon van egy video arról, hogyan készítsünk blogmotort 15 perc alatt: http://media.rubyonrails.org/video/rails_blog_2.mov
VChris eredeti hozzászólása
Mennyivel nehezebb, illetve nehezebb-e, mint a php alapú dolgok? Mennyi idő megtanulni középhaladó szinten?
Nehezebb, de gyorsabb. Igazán addig nehéz, amíg felfogod a logikáját.
Meg kell értsd a fő betűszavak mögötti filozófiát. Ezek: MVC (Model-View-Controller), CoC ( konvenció a konfiguráció előtt, vagyis, ha fal.html.erb a view layoutja, akkor a fal_controller.rb lesz a controller és a fals.rb lesz a model konvenció szerint, ha nem ezt akarod, összekapcsolhatod másként, de ha ezt így megtalálja akkor nem kell semmit írogatni, stb.
A harmadik a legnehezebb DRY. Vagyis ne ismételd magad. Például van egy új elemet hozzáadó form és egy elemeket szerkesztő form, és valamiben különböznek, akkor külön html.erb-et kapnak, de a közös részek:
Kód:
<%= render :partial => 'form' %>
-el lesznek renderelve, és külön létrehozol egy _form.html.erb amiben a közös részek megvannak. Így nem ismételted magad.
Aki pedig attól tart, hogy a hosszú nevek elkoptatják az ujjait, azoknak a legtöbb IDE segít. Például én e-texteditort használok. Ott beírom, hogy vnif és nyomok egy tabot és ez lesz belőle:
Kód:
validates_numericality_of :attribute,
:on => :create, :message => "is not a number",
:if => proc { |obj| obj.condition? }}
Hogy egy másik validatees példát hozzak fel.
Könyvjelzők