Upload
newbu
View
152
Download
0
Embed Size (px)
Citation preview
Wprowadzenie do Ruby on RailsModel warstwowy
Interesuj¡ce rozwi¡zania
Ruby on Rails
Maja Skowro«ska i Paweª Placzy«ski
Sekcja j¦zyka Ruby
�ód¹, 24 marca 2010 r.
Maja Skowro«ska i Paweª Placzy«ski Ruby on Rails
Wprowadzenie do Ruby on RailsModel warstwowy
Interesuj¡ce rozwi¡zania
Spis tre±ci
1 Wprowadzenie do Ruby on RailsWst¦pArchitektura Ruby on RailsTworzenie projektów w RoR
2 Model warstwowyWarstwa kontroleraWarstwa modeluWarstwa widoku
3 Interesuj¡ce rozwi¡zaniaProces tworzenia projektuInne rozwi¡zania
Maja Skowro«ska i Paweª Placzy«ski Ruby on Rails
Wprowadzenie do Ruby on RailsModel warstwowy
Interesuj¡ce rozwi¡zania
Wst¦pArchitektura Ruby on RailsTworzenie projektów w RoR
Czym jest Ruby on Rails?
Ruby on Rails (w skrócie: RoR) to framework przeznaczony doszybkiego tworzenia aplikacji webowych.
�(. . . ) zapewnia równowag¦ pomi¦dzy przyjemno±ci¡ z
programowania a produktywno±ci¡. Pozwala na pisanie
pi¦knego kodu preferuj¡c konwencj¦ nad kon�guracj¡.�
Maja Skowro«ska i Paweª Placzy«ski Ruby on Rails
Wprowadzenie do Ruby on RailsModel warstwowy
Interesuj¡ce rozwi¡zania
Wst¦pArchitektura Ruby on RailsTworzenie projektów w RoR
Czym jest framework?
Aplikacja szkieletowa (framework, rama projektowa, szkielet) tostruktura wspomagaj¡ca tworzenie, rozwój i testowanie powstaj¡cejaplikacji. Z reguªy na framework skªadaj¡ si¦ programywspomagaj¡ce, biblioteki kodu ¹ródªowego i inne podobnenarz¦dzia. Zapewnia podstawowe mechanizmy i mo»e by¢wypeªniany wªa±ciw¡ tre±ci¡ programu.
Maja Skowro«ska i Paweª Placzy«ski Ruby on Rails
Wprowadzenie do Ruby on RailsModel warstwowy
Interesuj¡ce rozwi¡zania
Wst¦pArchitektura Ruby on RailsTworzenie projektów w RoR
Czemu warto u»ywa¢ Ruby on Rails?
1 realizacja podstawowych funkcjonalno±ci aplikacji webowej;
2 programowanie obiektowe aplikacji webowych;
3 uªatwione testowanie i debugowanie;
4 �szybka p¦tla sprz¦»enia zwrotnego�;
Maja Skowro«ska i Paweª Placzy«ski Ruby on Rails
Wprowadzenie do Ruby on RailsModel warstwowy
Interesuj¡ce rozwi¡zania
Wst¦pArchitektura Ruby on RailsTworzenie projektów w RoR
Instalacja Ruby on Rails
http://rubyonrails.pl/pobierz
Maja Skowro«ska i Paweª Placzy«ski Ruby on Rails
Wprowadzenie do Ruby on RailsModel warstwowy
Interesuj¡ce rozwi¡zania
Wst¦pArchitektura Ruby on RailsTworzenie projektów w RoR
Dokumentacja - internet
1 http://rubyonrails.org
2 http://rubyonrails.pl
3 http://railscasts.com
4 http://peepcode.com
5 http://www.nomedojogo.com/livro/carlosbrando-rubyonrails21_en.pdf
6 news://comp.lang.ruby
7 news://pl.comp.lang.ruby
Maja Skowro«ska i Paweª Placzy«ski Ruby on Rails
Wprowadzenie do Ruby on RailsModel warstwowy
Interesuj¡ce rozwi¡zania
Wst¦pArchitektura Ruby on RailsTworzenie projektów w RoR
Dokumentacja - literatura
1 S. Holzner: Beginning Ruby on Rails
2 J. Zabieªªo: Ruby on Rails 2.1.
3 D. Thomas, D. H. Hansson, L. Breedt, M. Clark, J. D.Davidson, J. Gehtland, A. Schwartz: Agile programowanie w
Rails
4 M. Clark: Advanced Rails Recipes
5 Scott Raymond: Ajax on Rails
6 D. DeVires, M. Naberezny: Rails for PHP Developers
Maja Skowro«ska i Paweª Placzy«ski Ruby on Rails
Wprowadzenie do Ruby on RailsModel warstwowy
Interesuj¡ce rozwi¡zania
Wst¦pArchitektura Ruby on RailsTworzenie projektów w RoR
IDE wspomagaj¡ce RoR
1 TextMate (http://macromates.com/)
2 NetBeans (http://www.netbeans.org/)
3 Eclipse (http://www.eclipse.org/)
4 JEdit (http://www.jedit.org/)
5 SciTe (http://www.scintilla.org/SciTE.html)
6 RadRails (http://www.radrails.org/)
7 Arachno IDE (http://http://www.ruby-ide.com/ruby/ruby_ide_and_ruby_editor.php)
8 Komodo (http://www.activestate.com/komodo/)
9 RDE (http://http://homepage2.nifty.com/sakazuki/rde_en/)
10 Vim (http://www.vim.org/) wraz z wtyczkami
Maja Skowro«ska i Paweª Placzy«ski Ruby on Rails
Wprowadzenie do Ruby on RailsModel warstwowy
Interesuj¡ce rozwi¡zania
Wst¦pArchitektura Ruby on RailsTworzenie projektów w RoR
Model warstwowy MVC
1 Warstwa kontrolera - warstwa logiki aplikacji;
2 Warstwa modelu - warstwa dost¦pu do danych;
3 Warstwa widoku - warstwa UI;
Maja Skowro«ska i Paweª Placzy«ski Ruby on Rails
Wprowadzenie do Ruby on RailsModel warstwowy
Interesuj¡ce rozwi¡zania
Wst¦pArchitektura Ruby on RailsTworzenie projektów w RoR
Struktura katalogów
1 app - katalog z kodem projektu;
2 db - migracje i zarz¡dzanie baz¡ danych;
3 lib - biblioteki i moduªy automatycznieªadowane przez Rails;
4 public - katalog, w którym zamieszcznes¡ zasoby;
5 script - pomocnicze skrytpy Ruby'ego;
6 test - katalog z testami;
7 vendor - zewn¦trzne biblioteki potrzebnedo prawidªowego dziaªania projektu;
Maja Skowro«ska i Paweª Placzy«ski Ruby on Rails
Wprowadzenie do Ruby on RailsModel warstwowy
Interesuj¡ce rozwi¡zania
Wst¦pArchitektura Ruby on RailsTworzenie projektów w RoR
Moduªy
1 Rails - rdze« frameworka;
2 Active Support - implementacja helperów;
3 Active Record - obsªuga relacyjnych baz danych;
4 Action Mailer - wysyªanie i odbieranie maili;
5 Action Pack - obsªuga kontrolerów, szablonów, routera, sesjioraz �ltrów;
6 Active Resource - pozwala na zarz¡dzanie powi¡zaniamipomi¦dzy obiektami biznesowymi oraz internetowymiserwisami;
Maja Skowro«ska i Paweª Placzy«ski Ruby on Rails
Wprowadzenie do Ruby on RailsModel warstwowy
Interesuj¡ce rozwi¡zania
Wst¦pArchitektura Ruby on RailsTworzenie projektów w RoR
Narz¦dzie rake
Rake1 jest narz¦dziem do budowania elementów projektów w Rubyon Rails podobny w dziaªaniu do znanego make.Uruchamiaj¡c w katalogu projektu Rails rake -T wy±wietlonazostanie lista zada« dotycz¡ca projektu.
1http://rake.rubyforge.orgMaja Skowro«ska i Paweª Placzy«ski Ruby on Rails
Wprowadzenie do Ruby on RailsModel warstwowy
Interesuj¡ce rozwi¡zania
Wst¦pArchitektura Ruby on RailsTworzenie projektów w RoR
Stworzenie nowego projektu
rails nazwa_projektu
Maja Skowro«ska i Paweª Placzy«ski Ruby on Rails
Wprowadzenie do Ruby on RailsModel warstwowy
Interesuj¡ce rozwi¡zania
Wst¦pArchitektura Ruby on RailsTworzenie projektów w RoR
Narz¦dzia w katalogu script
1 generate - skrypt przeznaczony do tworzenia kontrolerów,modeli, szablonów itp. ;
2 destroy - skrypt przeznaczony do usuwania elementówstworzonych przez skrypt generate;
3 console - skrypt uruchamiaj¡cy konsol¦ IRB w ±rodowiskuprojektu;
4 dbconsole - skrypt uruchamiaj¡cy konsol¦ DBMS bazydanych;
5 server - skrypt uruchamiaj¡cy serwer i aplikacj¦;
6 runner - skrypt wykonuje kod j¦zyka Ruby;
7 plugin - skrypt zarz¡dzaj¡cy pluginami;
8 about - skrypt wy±wietlajacy dane dotycz¡ce projektu;
Maja Skowro«ska i Paweª Placzy«ski Ruby on Rails
Wprowadzenie do Ruby on RailsModel warstwowy
Interesuj¡ce rozwi¡zania
Wst¦pArchitektura Ruby on RailsTworzenie projektów w RoR
Narz¦dzia katalogu script cd.
1 performance/benchmarker - testuje kilka razy wydajno±¢pewnej cz¦±ci kodu;
2 performance/profiler - pro�luje pojedyncz¡ instrukcj¦ w±rodowisku;
3 performance/request - skrypt ten pozwala wykona¢ wi¦ksz¡liczb¦ »¡da« dla adresu URI w aplikacji i otrzyma¢ szczegóäowyraport pro�lu kodu w wersji tekstowej oraz HTML;
4 process/inspector - wy±wietla informacje systemowe natemat dyspozytorów Rails przy u»yciu polecenia ps;
5 process/reaper - zamykanie, przeªadowywanie oraz ponowneuruchamianie dyspozytorów Rails;
6 process/spawner - uªatwia uruchamianie wi¦kszej liczbyprocesów wykonuj¡cych dyspozytor Rails;
Maja Skowro«ska i Paweª Placzy«ski Ruby on Rails
Wprowadzenie do Ruby on RailsModel warstwowy
Interesuj¡ce rozwi¡zania
Warstwa kontroleraWarstwa modeluWarstwa widoku
Przykªad
Generacja kontrolera Przyklad
$ script/generate controller Przyklad
exists app/controllers/
exists app/helpers/
create app/views/przyklad
exists test/functional/
create app/controllers/przyklad_controller.rb
create test/functional/przyklad_controller_test.rb
create app/helpers/przyklad_helper.rb
Maja Skowro«ska i Paweª Placzy«ski Ruby on Rails
Wprowadzenie do Ruby on RailsModel warstwowy
Interesuj¡ce rozwi¡zania
Warstwa kontroleraWarstwa modeluWarstwa widoku
Przykªad cd.
app/controllers/przyklad_kontroller.rb
class PrzykladController < ApplicationController
end
test/functional/przyklad_controller_test.rb
require 'test_helper'
class NazwakontroleraControllerTest <
ActionController::TestCase
# Replace this with your real tests.
def test_truth
assert true
end
end
Maja Skowro«ska i Paweª Placzy«ski Ruby on Rails
Wprowadzenie do Ruby on RailsModel warstwowy
Interesuj¡ce rozwi¡zania
Warstwa kontroleraWarstwa modeluWarstwa widoku
Filtry
before_filter
Akcja wykonywana tu» przed realizacj¡ jakiejkolwiek akcji wkontrolerze.
after_filter
Akcja wykonywana po realizacji dowolnej akcji.
around_filter
Filtr ª¡cz¡cy w sobie cechy before_filter i after_filter.
Maja Skowro«ska i Paweª Placzy«ski Ruby on Rails
Wprowadzenie do Ruby on RailsModel warstwowy
Interesuj¡ce rozwi¡zania
Warstwa kontroleraWarstwa modeluWarstwa widoku
Routing
config/routes.rb
ActionController::Routing::Routes.draw do |map|
map.connect ':controller/:action/:id'
map.connect ':controller/:action/:id.:format'
end
Opcje routingu - przykªady
1 map.root :controller => 'home'
2 map.connect 'prefix/:name/:msg', :controller =>
'users', :action => 'msg'
# http://serwer/prefix/kowalski/hello
# params = { :controller => 'users', :action =>
'msg', :name => 'kowalski', :msg => 'hello' }
Maja Skowro«ska i Paweª Placzy«ski Ruby on Rails
Wprowadzenie do Ruby on RailsModel warstwowy
Interesuj¡ce rozwi¡zania
Warstwa kontroleraWarstwa modeluWarstwa widoku
Sesje
Ruby on Rails u»ywa mechanizmu sesji (przechowywania informacjio u»ytkowniku po stronie serwera) oraz ciasteczek (przechowywaniainformacji o u»ytkowniku po stronie klienta).Oba rozwi¡zania realizowane s¡ w RoR jak obsªuga tablicyasocjacyjnych (hash):
1 session - tablica dla realizacji sesji;
2 cookies - tablca dla realizacji ciasteczek;
Maja Skowro«ska i Paweª Placzy«ski Ruby on Rails
Wprowadzenie do Ruby on RailsModel warstwowy
Interesuj¡ce rozwi¡zania
Warstwa kontroleraWarstwa modeluWarstwa widoku
Helpery
Wygl¡d helpera
module PrzykladHelper
end
Czym jest helper?
Helper jest moduªem rozszerzaj¡cym dziaªanie kontrolera,zazwyczaj uªatwiaj¡cym realizacj¦ funkcjonalno±ci.W helperach implementujemy metody, które nie s¡ stricte akcjami.
Maja Skowro«ska i Paweª Placzy«ski Ruby on Rails
Wprowadzenie do Ruby on RailsModel warstwowy
Interesuj¡ce rozwi¡zania
Warstwa kontroleraWarstwa modeluWarstwa widoku
Active Record
Active Record to narz¦dzie zarz¡dzania baz¡ danych w RoR.Zapewnia obsªug¦ niskopoziomowych zapyta« SQL, daj¡cprogrami±cie narz¦dzie obiektowe.
Maja Skowro«ska i Paweª Placzy«ski Ruby on Rails
Wprowadzenie do Ruby on RailsModel warstwowy
Interesuj¡ce rozwi¡zania
Warstwa kontroleraWarstwa modeluWarstwa widoku
config/database.yml
SQLite
:adapter => �sqlite3�
:database => �nazwa_pliku�
MySQL
:adapter => �mysql�
:database => �nazwa_bazy�
:username =>�nazwa_u»ytkownika�
:password => �hasªo_u»ytkownika�
:socket => �±cie»ka_do_pliku_*.sock�
:encoding => �utf8�
Maja Skowro«ska i Paweª Placzy«ski Ruby on Rails
Wprowadzenie do Ruby on RailsModel warstwowy
Interesuj¡ce rozwi¡zania
Warstwa kontroleraWarstwa modeluWarstwa widoku
config/database.yml
PostgreSQL
:adapter => �postgres�
:database => �nazwa_bazy�
:username =>�nazwa_u»ytkownika�
:password => �hasªo_u»ytkownika�
:host => �adres_hosta�
Maja Skowro«ska i Paweª Placzy«ski Ruby on Rails
Wprowadzenie do Ruby on RailsModel warstwowy
Interesuj¡ce rozwi¡zania
Warstwa kontroleraWarstwa modeluWarstwa widoku
Migracje
Stworzenie migracji
$ script/generate migration migracja
create db/migrate
create db/migrate/20100323205423_migracja.rb
Plik migracji (db/migrate/20100323205423_migracja.rb)
class Migracja < ActiveRecord::Migration
def self.up
end
def self.down
end
end
Maja Skowro«ska i Paweª Placzy«ski Ruby on Rails
Wprowadzenie do Ruby on RailsModel warstwowy
Interesuj¡ce rozwi¡zania
Warstwa kontroleraWarstwa modeluWarstwa widoku
Migracje - operacje
1 tworzenie tabel - create_table;
2 usuwanie tabel - drop_table;
3 ustawianie indeksów - add_index;
4 usuwanie indeksów - remove_index;
5 dodawanie kolumn w tabelach - add_ccolumn;
6 edycja kolumn w tabelach - change_column;
7 usuwanie kolumn z tabel - remove_column;
Maja Skowro«ska i Paweª Placzy«ski Ruby on Rails
Wprowadzenie do Ruby on RailsModel warstwowy
Interesuj¡ce rozwi¡zania
Warstwa kontroleraWarstwa modeluWarstwa widoku
Operacje na danych
Tworzenie nowych rekordów
b1 = Book.new
b1.title = �tytuª�
b1.author = �autor�
b1.save
b2 = Book.new :title => �tytuª�, :author => �autor�
b2.save
Kasowanie rekordów
Book.delete 5 # kasuje rekord o id = 5
Book.delete [3,7,1] # kasuje rekordy o id równym 3, 7
oraz 1
Book.delete_all
Maja Skowro«ska i Paweª Placzy«ski Ruby on Rails
Wprowadzenie do Ruby on RailsModel warstwowy
Interesuj¡ce rozwi¡zania
Warstwa kontroleraWarstwa modeluWarstwa widoku
Operacje na danych cd.
Selekcja danych z rekordów
User.find_by_sql �zapytanie_sql�
User.count_by_sql �zapytanie_sql�
User.find :first, :conditions => ['id=?', 2]
User.find :all, :conditions => { :id => 2 }
User.all :conditions => { :id => 2 }
User.find 4
named_scope
Linijka w klasie Book:named_scope :avaliable, :conditions => { :status =>
'avaliable' }
pozwala u»y¢:Book.avaliable # SELECT * FROM books WHERE status =
'avaliable'
Maja Skowro«ska i Paweª Placzy«ski Ruby on Rails
Wprowadzenie do Ruby on RailsModel warstwowy
Interesuj¡ce rozwi¡zania
Warstwa kontroleraWarstwa modeluWarstwa widoku
Szablony
1 ERb;
2 Haml & Sass - http://haml.hamptoncatlin.com
3 Erubis - http://www.kuwata-lab.com/erubis
4 Liquid - http://www.liquidmarkup.org
5 Markaby - http://rubyforge.org/projects/markaby
6 MasterView - http://masterview.org
Maja Skowro«ska i Paweª Placzy«ski Ruby on Rails
Wprowadzenie do Ruby on RailsModel warstwowy
Interesuj¡ce rozwi¡zania
Warstwa kontroleraWarstwa modeluWarstwa widoku
Szablony - ERb
1 <%# tekst komentarza %>;
2 <% wykonywalna instrukcja %>;
3 <% wykonywalna instrukcja -%>;
4 <%= wstawiany tekst %>;
5 <%= wstawiany tekst -%>;
Maja Skowro«ska i Paweª Placzy«ski Ruby on Rails
Wprowadzenie do Ruby on RailsModel warstwowy
Interesuj¡ce rozwi¡zania
Warstwa kontroleraWarstwa modeluWarstwa widoku
Przepªyw informacji pomi¦dzy szablonami
Maja Skowro«ska i Paweª Placzy«ski Ruby on Rails
Wprowadzenie do Ruby on RailsModel warstwowy
Interesuj¡ce rozwi¡zania
Proces tworzenia projektuInne rozwi¡zania
Debugowanie
1 dzienniki (log) zapisuj¡ce dziaªalno±¢ serwisu;
2 interaktywna konsola;
3 tryby pracy - testowy, deweloperski oraz biznesowy;
4 tryb piaskownicy w dziaªaniu konsoli;
5 RubyDebug - http://rubyforge.org/projects/ruby-debug/
Maja Skowro«ska i Paweª Placzy«ski Ruby on Rails
Wprowadzenie do Ruby on RailsModel warstwowy
Interesuj¡ce rozwi¡zania
Proces tworzenia projektuInne rozwi¡zania
Wdro»enie
1 Webrick (nie polecany);
2 Apache + Fusion passenger - http://www.modrails.com
3 Apache/Ngix + Mongrel - http://mongrel.rubyforge.org
4 Apache/Ngix + Thin - http://code.macournoyer.com/thin
5 Apache/Ngix + Ebb - http://ebb.rubyforge.org
6 inne . . . (patz http://rubyonrails.pl/wdrozenie)
Maja Skowro«ska i Paweª Placzy«ski Ruby on Rails
Wprowadzenie do Ruby on RailsModel warstwowy
Interesuj¡ce rozwi¡zania
Proces tworzenia projektuInne rozwi¡zania
Ajax on Rails
1 tutorial do Ajaxa -http://www.w3schools.com/ajax/default.asp
2 tutorial do Ajax on Rails - http://tinyurl.com/ajaxonrails
3 (dla zaawansowanych) optymalizacja Ajax on Rails -http://tinyurl.com/optimizeajaxonrails
Maja Skowro«ska i Paweª Placzy«ski Ruby on Rails
Wprowadzenie do Ruby on RailsModel warstwowy
Interesuj¡ce rozwi¡zania
Proces tworzenia projektuInne rozwi¡zania
Wersje mi¦dzynarodowe
1 obsªuga standardowych metod kodowania znaków;
2 mo»liwo±¢ tªumaczenia szablonów oraz tekstów z bazy danych;
3 Rails I18n - http://github.com/svenfuchs/rails-i18n
4 GLoc - http://rubyforge.org/projects/gloc/
5 Globalize - http://globalize-rails.org/
Maja Skowro«ska i Paweª Placzy«ski Ruby on Rails