Hvað er Ruby og Ruby on Rails?
Ruby er öflugasta ókompælaða tungumálið í boði í dag og frægt fyrir að vera skemtilegt og snöggt í þróun. Ruby on Rails er framework ofaná Ruby til að auðvelda gerð vefsíðna. RoR er svokallað MVC framework. MVC var hannað 1979 og byggist á að skipta upp forritinu í 3 hluta. Model, Views og Controllers. Þetta einfaldar til muna alla þróun. Model sér um gögnin og lógíkina. Til dæmis sér það um tengslin við gagnagrunnin og hvernig töflur tengjast saman. View eins og nafnið bendir til sér um útlitið. Þar mundi vera template að síðunni og upplýsingar hvernig á að birta gögnin úr módelinu. Controller sér svo um að binda þessa tvo hluti saman. Það tekur við beiðni frá vefþjóninum og hefur þá samband við módelið til að fá eða senda gögnin og hefur svo samband við viewið til að sjá hvernig á að birta þessar upplýsingar.
Vefur settur upp
Ég ætla ekki að fara í langar útskýringar hvernig þú setur upp RoR. Það ætti að vera einfalt að skoða http://www.rubyonrails.org/down og ef eitthvað vandamál kemur upp þá get ég hjálpað þeim sem að hafa samband.
Nú ætti fólk að geta byrjað á að setja upp rails skráarsafn. Best er að opna skel og fara þangað sem þið viljið að forritið ykkar verði. Það skiptir ekki máli hvar það er þar sem að það fylgir með lítill vefserver fyrir þróunarvinnu. Skrifið inn skipunina rails tutorials. Nú ættuð þið að sjá rails skapa skráarsafnið tutorials og setja þangað inn töluvert af skráarsöfnum og skrám. Áður en við ræsum upp rails ætlum við að setja upp tengingu við gagnagrunnin. Það gerum við með því að breyta skránni config/database.yml
login: &login adapter: mysql host: localhost username: root password: LYKILORÐ development: database: kodasafn <<: *login test: database: kodasafn_tests <<: *login production: database: kodasafn <<: *login
Við förum ekki hér strax í muninn á production, development og test. Farið nú inn í tutorials skráarsafnið og skrifið ruby script/server. Þarna ætti að koma upp Webrick vefserverinn og farið nú og prufið að skoða síðuna http://localhost:3000/. Þarna ætti að koma upp voða sæt síða sem segir ykkur að þú sért með Rails uppsett. Þú ættir þá að vera tilbúinn að fara setja upp sjálfa síðuna.
Gagnagrunnurinn og módelin
Næst skulum við skapa gagnagrunnin. Við byrjum á einfaldri töflu fyrir kóðana og móðurtöflu til að flokka kóðana í þau tungumál sem að þau tilheyra. RoR hefur einfalda reglu til að þú þurfir ekki að tengja sérstaklega módelin við töflurnar. Módel sem heitir Language reynir að tengjast við töflu sem heitir languages. Semsagt módelið og controllerinn er í eintölu og taflan er í fleirtölu. Þetta gæti flækst fyrir þér núna þegar þú ert ekki vanur þessu en eftir nokkra daga þá muntu skilja hverni þetta sparar þér tíma. Notið það SQL forrit sem að þið notið yfirleitt til að setja þetta upp. Í grunnin sem við nefndum í database.yml með heitinu kodasafn skrifum við:
CREATE TABLE languages ( id int(15) NOT NULL auto_increment, title varchar(10) NOT NULL, description text, PRIMARY KEY (id) ) CREATE TABLE snippets ( id int(15) NOT NULL auto_increment, language_id int(15) NOT NULL, title varchar(50) NOT NULL , body text, description text, PRIMARY KEY (id) )
class Language < ActiveRecord::Base has_many :snippets end
class Snippets < ActiveRecord::Base belongs_to :language end
Scaffolding
Þar sem að þetta er einfalt lítið local forrit þá ætlum við bara að byggja útlitið á scaffolds. Scaffolds eru einföld lítil CRUD(Create,Read,Update,Delete) síða sem að inniheldur flest sem að þú vilt gera með grunna. Skrifið bara skipunina ruby script/generate scaffold Language og farið á http://localhost:3000/languages Þetta er ekki fallegt og þú mundir ekki nota þetta í alvöru forriti en þetta er fín leið til að koma gögnum inn í grunnin. Gerum færslurnar “Ruby” og “PHP” tildæmis til að setja eitthvað af gögnum inn. Gerum nú sama fyrir Snippets með skipuninni ruby script/generate scaffold Snippet og skoðum http://localhost:3000/snippets. Við fyrstu skoðun þá vantar nokkuð uppá hér. Til dæmis vantar að tengja koðana sem þú setur inn við tungumálið.
Samtenging
Næst ber að opna skránna app/controllers/snippets_controller.rb. Þar undir sjáiði mokkur methods. undir def new og def edit bætiði við línuni:
@languages = Language.find_all
<p><b>Language:</b><br> <select name="snippet[language_id]"> <% @languages.each do |language| %> <option value="<%= language.id %>" <%= ' selected' if language.id == @snippet.language_id %> > <%= language.title %> </option> <% end %> </select></p>
<h1>Listing snippets</h1> <% for snippet in @snippets %> <p><br />Title: <%= snippet.title %> <br />Language: <%= snippet.language.title %> <br />Action: <%= link_to 'Show', :action => 'show', :id => snippet %> - <%= link_to 'Edit', :action => 'edit', :id => snippet %></td> - <%= link_to 'Destroy', { :action => 'destroy', :id => snippet }, :confirm => 'Are you sure?', :post => true %></p> <% end %> <%= link_to 'Previous page', { :page => @snippet_pages.current.previous } if @snippet_pages.current.previous %> <%= link_to 'Next page', { :page => @snippet_pages.current.next } if @snippet_pages.current.next %> <br /><p><%= link_to 'New snippet', :action => 'new' %></p>
Farið nú og skoðið http://localhost:3000/snippets/ og þið ættuð að gera gert fullt af kóðum og flokkað undir tungumál.
Ég held við segjum þetta gott í þessum fyrsta parti tutorialsins. Í næsta parti sýni ég hvernig þú getur sett inn liti á kóðan með notkun CodeRay viðbótarinnar og hvernig má nota layouts til að láta hlutina lýta betur út. Þangað til mæli ég með að skoða /app/views/layouts. Einnig fer ég í hvernig þú getur valideitað að gögn séu sett rétt in.