Představení Ruby on Rails

Embed Size (px)

Citation preview

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