představení ruby on rails
TRANSCRIPT
Pedstaven Ruby on Rails
Pednejc ze spolenosti IglooNET, s.r.o.Martin Peout
Marek Huln
Vce info na http://blog.igloonet.cz/
Tma pednkyPedstaven Ruby on Rails vhody a nevhody
Ukzka vvoje
Komu je pednka urena?
Zkladn informace
Souasn programovac jazyky, kter se vyuvaj ve vvoji web a webovch aplikacPHP
Ruby
Python
Perl
Java
a dal
Zkladn informace
Vyuvn framework
Co je to framework?Clem frameworku je pevzet typickch problm dan oblasti, m se usnadn vvoj tak, aby se nvrhi a vvoji mohli soustedit pouze na zadn sv prce.
Pro PHPNette, Zend
Pro jazyk RubyRuby on Rails
Zkladn informace
Pro jsem se rozhodl odejt od PHP?
Pro jsem radji nezvolil njak PHP framework?
A pro jsem si zrovna vybral jako alternativu Ruby on Rails?
Pedstaven jazyka Ruby
Programovac jazyk RubyJe na nm postaven webov framework Ruby on Rails
Zmrem bylo spojit prvky z programovacch jazyku (Perl, Smalltalk, Eiffel, Ada a Lisp)
Pomrn star jazyk ji od roku 1995
Vt pozornosti se mu dostalo a nov ve spojen s frameworkem Ruby on Rails
Pedstaven jazyka Ruby
Ruby je k dispozici zcela zdarma. Voln ho lze uvat, koprovat, upravovat a distribuovat.
Index TIOBE1, kter m nrst programovacch jazyk, uvd Ruby na 10 mst (viz. dal slide)
Pedstaven jazyka Ruby
Pedstaven jazyka Ruby
Pedstaven jazyka Ruby
Ruby je pln objektov programovac jazykVe, co vvoj v kdu pouije, je objektem.
Mnoho programovacch jazyku nem sla a dal primitivn typy implementovny jako objektyNaopak v Ruby m kad typ svoje instann promnn a svoje akce
(Ukzka viz dle)
Pedstaven jazyka Ruby
5.times { print "ahoj!\n" } # Ruby kd
number = Math.abs(-5) // Java kd
number = -5.abs # Ruby kd
1 + . misto # chybn Ruby kd
1.to_s + . misto # Ruby kd
Pedstaven jazyka Ruby
variable ||= 1 # Ruby kd
$split = implode ("", $array); # PHP kd
[ "a", "b", "c" ].join # Ruby kd
Mapovn:['brno', 'praha'].map(&:capitalize)
Pedstaven jazyka Ruby
Ruby pichz s vt flexibilitouVvoj mohou mnit voln sti jazyka odebrn, pidn metod (i tch zkladnch)
Zpsob psan kdu - syntaxe pak ve vsledku pipomn spe psanou vtu ne kd programovacho jazyka
Nutn si zvyknout, ale docl se tm ve vsledku spora syntaxe
Pklad:body += additional_text unless additional_text.nil?
Pedstaven jazyka Ruby
Ruby rozum spoust konstrukcZvorky ke zpesten kdu, ale meme i bez nich
Se stednkem i bez nho
Pklad:number = (2 + 1);
Number = 2 + 1
Pedstaven jazyka Ruby
Rozmez: 1..10
'a'..'z
Pklady:(1..10).to_a => [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
('cab'..'caf').to_a => ["cab", "cac", "cad", "cae", "caf"]
('cab'..'caf').include?('cae') => true
Pedstaven jazyka Ruby
score = 70
result = case score when 0..40: "Fail" when 41..60: "Pass" when 61..70: "Pass with Merit" when 71..100: "Pass with Distinction" else "Invalid Score"end
puts result
Model View Controller
Architektura MVCRozdlen systmu do 3 logickch celk Model, View, Controller
ModelZpracovn dat
Rozhran mezi databz a Controllerem
ViewZobrazen dat pedanch modelem
Grafick rozhran neobsahuje vlastn data (to zastv modelu), ani logiku prce s nimi (o to se star controller).
Model View Controller
ControllerPebr vstupy od uivatele
Zpracuje je podle poteby a pak d cel zobrazen dat na vstup.
Zajiuje tak logiku chovn celho systmu.
Pitom samozejm podle poteby spolupracuje s modelem. Pedv mu poadavky na zmny, a kdykoli je to zapoteb, vyd si od nj daje pro zobrazen.
Model View Controller
Framework Ruby on Rails
Ruby on Rails je webov framework
Oficiln vydno 2004
Pi jeho vvoji byl pouit nstroj projektovho zen Basecamp
Mezi zkladn princip pat: Konvence m pednost ped konfiguracprogramtor konfiguruje pouze ty sti aplikace, kter se li od bnho nastaven.
Model Person defaultn hled v DB tabulce people
Zkladn vlastnosti Ruby on Rails
Ulehen bnch kon programtoraRozen jazyka Ruby
Pomocn metody helper dostupn v pohledech
Rozen jazyka Ruby dopluj zkladn tdy Array, Date, Hash, Numeric a String o pohodln metody, kter zjednoduuj asto se opakujc operace.
Vechna tato rozen velice posiluj vyjadovac schopnost jazyka Ruby.
Rozen jazyka Ruby
sla7.even? # Zjitn zda je slo sud nebo lich?
DatumDate.today 2.days
1.day.ago
2.weeks.ago
5.minutes.ago
Pomocn metody
Dostupn v pohledech
Zjednoduen generovn HTML kdu a formtovn vstupu
Odkazy:link_to 'Odstranit zznam', {:controller => 'groups', :action => 'delete', :id => group}, :confirm => 'Jste si jist?'
Pomocn metody
Mme rdi uivatelsky pvtiv aplikacePolidtn vpis dat
Pkladytime_ago_in_words(5.minute.ago) => "5 minutami"
number_to_currency(999) => "999,00 K"
Mme monost definovat vlastn metody
Genertory
Genrtory kduUreny pro zatenky
Snadn vytven model, pohled a ostatnch soust aplikace
Automatick vytvoen zklad aplikace
Pkladem mou byt tzv. Scaffold genertoryK databzov tabulce vytvoen formulVARCHAR v databzi => textov pole
BOOLEAN v databzi => checkbox
Vytvoen tabulky pro vpis dat
Databze v Ruby on Rails
Pouit principu ORM (Object-relational mapping)Vechny zznamy z relan databze vystupuj jako objekty
Jednotliv sloupce jsou vystupuj jako atributy objektu
Nen nutn pst SQL pkazy
Programtor nen omezen zvolenou databzSnadn zmna bez nutnosti pepisovat SQL dotazy
Databze v Ruby on Rails
Vytvoen novho zznamu v DB:p = Person.new :first_name => 'Martin', :sure_name => 'Peout'p.comment = 'autor odbornho lnku'p.save
Databze v Ruby on Rails
Snadn zmna adaptru DB
Podporovan:MySQ, PostgreSQL, SQLite, SQL Server, IBM DB2, Informix, Oracle, Firebird/Interbase, LDAP, SybaseASA (Sybase Adaptive Server Anywhere aka SQL Anywhere Studio), MonetDB, a dal...
Databze v Ruby on Rails
astm problm: jak udret pehled ve zmnch v databzovm schmatu pedevm pi prci v tmu
eenm jsou migraceTextov soubory
Snadn verzovn (Subversion, GIT, ...)
Snadn vracen se zpt dv metody up a down
Databze v Ruby on Rails
Konvence v nvrhu databzovho schmatuAnglick nzvy objekt vs. nzvy tabulek (viz. ukzka)
Nzvy primrnch kl id
Nzvy cizch kl podle konvenc (viz. Ukzka)
Speciln sloupce created_on
updated_on
Databze v Ruby on Rails
class CreateItems < ActiveRecord::Migration def self.up create_table :items do |t| end end def self.down drop_table :items endend
Databze v Ruby on Rails
Databze v Ruby on Rails
Vvojov prosted
Monost spustit aplikaci v jednom ze t pipravench prosted:Vvojov
Produkn
Testovac
Monost oddlen databze
Monost oddlen pluginu
Tvorba interaktivnch aplikac
Vyuit JavaScriptu, podpora jQuery, Prototype
Vyut AJAXu
Jak vytvoit bn odkaz?link_to('Odstranit zznam', :url => {:controller => 'groups', :action => 'delete', :id => group}, :confirm => 'Jste si jist?')
Jak vytvoit AJAXov odkaz?link_to('Odstranit zznam', :url => {:controller => 'groups', :action => 'delete', :id => group}, :remote => true, :confirm => 'Jste si jist?')
Podpora vce jazyk
Problm vtch projekt
Oddlujeme vechny pekldan textov etzce
Oddlen peklady jsou umstny ve specilnch textovch souborech
Snadn pepnn jazyk
Podpora vce jazyk
Soubor s EN peklady:en: hello: "Hello world"
Soubor v CZ pekladycs: hello: "Ahoj svte"
V pohledech v aplikacit :hello
Rozen pomoc plugin
Velik mnostv pluginPro pouvat vytvoen rozen?Odladn problmy
Rychl zmny
ast nov funkce
Testovn aplikace
Problm u rozrstajcch se aplikacNememe kontrolovat neustle ve
Snadnost zanesen novch chyb
Vdy ale ve zle na tom, s jakou dslednost se testy p
Zvrem
Nevhody oproti ostatnm frameworkm?
Dkuji za pozornost
Prostor pro dotazy
Ve naleznete na naem blogu http://blog.igloonet.cz/
Muokkaa otsikon tekstimuotoa napsauttamalla
Muokkaa jsennyksen tekstimuotoa napsauttamallaToinen jsennystasoKolmas jsennystasoNeljs jsennystasoViides jsennystasoKuudes jsennystasoSeitsems jsennystasoKahdeksas jsennystasoYhdekss jsennystaso
Muokkaa otsikon tekstimuotoa napsauttamalla
Muokkaa jsennyksen tekstimuotoa napsauttamallaToinen jsennystasoKolmas jsennystasoNeljs jsennystasoViides jsennystasoKuudes jsennystasoSeitsems jsennystasoKahdeksas jsennystasoYhdekss jsennystaso