Rails Sztuka programowania.pdf

(343 KB) Pobierz
Rails.
Sztuka programowania
Autor: Edward Benson
T³umaczenie: Rafa³ Joñca
ISBN: 978-83-246-2071-5
Tytu³ orygina³u:
The Art of Rails
Format: 172x245, stron: 336
Oprawa: twarda
Jak osi¹gn¹æ najwiêksze korzyœci z architektury MVC?
Jak programowaæ, korzystaj¹c z bloków?
Jak tworzyæ Web API?
Ruby on Rails przebojem wdar³ siê na rynek szkieletów aplikacji internetowych. Stworzony
w architekturze MVC z wykorzystaniem popularnego jêzyka Ruby, zosta³ entuzjastycznie
przyjêty przez spo³ecznoœæ programistów. G³ówne za³o¿enia tego projektu to ³atwoœæ
i przyjemnoœæ tworzenia kodu, a co za tym idzie — szybkie i efektywne tworzenie aplikacji
internetowych. Liczba rozwi¹zañ, które powsta³y z wykorzystaniem tego szkieletu, œwiadczy
o jego wysokiej jakoœci oraz znacz¹co wp³ywa na wzrost popularnoœci samego jêzyka Ruby.
Je¿eli ta ksi¹¿ka znalaz³a siê w Twoich rêkach, to z pewnoœci¹ powy¿sze wiadomoœci nie s¹ Ci
obce. Kierowana jest ona do programistów, którzy znaj¹ ju¿ Ruby on Rails i pragn¹ pog³êbiæ
swoj¹ wiedzê. Dziêki ksi¹¿ce „Rails. Sztuka programowania” dowiesz siê, jak organizowaæ swój
kod tak, aby osi¹gn¹æ najwy¿sz¹ efektywnoœæ i zachowaæ zgodnoœæ z ide¹ DRY (Don’t Repeat
Yourself). Poznasz zasady zaawansowanego programowania w jêzyku Ruby wraz
z metaprogramowaniem oraz nauczysz siê korzystaæ z programowania opartego na blokach.
Ponadto zapoznasz siê z wzorcami projektowymi dla technologii AJAX, interfejsami
programistycznymi dla WWW, dekompozycj¹ kodu HTML oraz nauczysz siê w wydajny sposób
rozwijaæ schemat bazy danych. Z pewnoœci¹ zainteresuje Ciê rozdzia³ poœwiêcony
programowaniu sterowanym zachowaniem. Te i wiele innych informacji znajdziesz w niniejszej
ksi¹¿ce, która wydaje siê byæ obowi¹zkow¹ dla ka¿dego programisty Ruby on Rails!
Ca³a prawda o aplikacjach internetowych
Koncepcja Rails
Architektura MVC
Zarz¹dzanie cyklem ¿ycia aplikacji
Korzyœci z zastosowania architektury MVC
Zastosowanie technologii ActiveRecord
Tworzenie Web API
Wykorzystanie zasobów oraz obs³uga ¿¹dañ REST
Zastosowanie formatów XML, RSS, RDF
Sposoby ograniczania dostêpu do API
Wzorce zastosowañ technologii AJAX
Zasady programowania z wykorzystaniem bloków
Mieszanie i ³atanie klas
Wykorzystanie dynamicznego kodu
RSpec — programowanie sterowane zachowaniem
Cykl programowania
Opanuj sztukê programowania w Ruby on Rails!
Spis treÊci
5
Spis treÊci
O autorze ...................................................................................................................................................11
PodziÂkowania .........................................................................................................................................13
Wprowadzenie .........................................................................................................................................15
RozdziaÄ 1. Rozwój nowego systemu witryn internetowych .................................................................21
Rails, sztuka i nowy internet .......................................................................................... 23
Sztuka i in ynieria ................................................................................................... 23
Nowe witryny WWW ................................................................................................. 24
Prawda o aplikacjach internetowych .......................................................................... 25
Historia pacjenta — witryny internetowe ......................................................................... 26
Od dokumentów do interfejsów ................................................................................ 29
Upadek semantyki .................................................................................................. 30
Witajcie, aplikacje internetowe ................................................................................. 33
Pojawienie siö nowego podej cia ................................................................................... 40
RozdziaÄ 2. Koncepcja Rails .....................................................................................................................41
W jednej czö ci szkielet ................................................................................................ 43
Konfiguracja ........................................................................................................... 43
Kod ....................................................................................................................... 45
Proces ................................................................................................................... 46
W jednej czö ci jözyk .................................................................................................... 48
Modele w Rails ....................................................................................................... 49
Zadania specyficzne dla stron WWW ......................................................................... 51
JavaScript .............................................................................................................. 52
Moduäy dodatkowe .................................................................................................. 53
W dwóch czö ciach sposób my lenia ............................................................................. 53
Witryny internetowe to aplikacje MVC ........................................................................ 54
Aplikacje internetowe to ekosystemy ........................................................................ 54
Konwencja ponad konfiguracjö ................................................................................. 55
Maäe zaäo enie przebywa däugñ drogö ....................................................................... 56
Kwestie estetyczne ................................................................................................. 57
6
Rails. Sztuka programowania
Wyzwalajñce ograniczenia ........................................................................................ 58
Zbyt mocno siö powtarzasz ...................................................................................... 60
Testowanie nie jest opcjonalne ................................................................................ 62
Sieè to zbiór zasobów, a nie usäug ............................................................................ 63
Podsumowanie ............................................................................................................ 64
Zäoty rodek nie istnieje .......................................................................................... 65
Optymizuj swój sposób kodowania, zanim przystñpisz do optymalizacji kodu ................ 65
RozdziaÄ 3. Serwer jako aplikacja ......................................................................................................... 67
Model-widok-kontroler w wersji skróconej ....................................................................... 69
MVC i strony WWW ....................................................................................................... 71
Proces projektowy MVC ................................................................................................. 72
Widok to specyfikacja .............................................................................................. 73
Przykäad — portal spoäeczno ciowy dla kucharzy ........................................................ 74
Zarzñdzanie cyklem ycia aplikacji ................................................................................. 78
My l w sposób lekki, nie in ynieryjny ........................................................................ 78
My l w sposób kontrolowany, a nie organiczny .......................................................... 79
Strze siö operacji na otwartym sercu ....................................................................... 79
Podsumowanie ............................................................................................................ 80
RozdziaÄ 4. Osi¾gniÂcie jak najwiÂkszych korzyÊci z M, V i C ..............................................................81
Najlepsza dokumentacja interfejsów jest gratis ............................................................... 82
Model ......................................................................................................................... 83
Obiekty modeli powinny siö nawzajem rozumieè ......................................................... 84
U yj wyjñtków, by zwiökszyè czytelno è kodu ............................................................. 86
Odwzorowanie z wierszy na obiekty ........................................................................... 89
Asocjacje polimorficzne ........................................................................................... 90
wiat poza ActiveRecord .......................................................................................... 92
Widok .......................................................................................................................... 92
Problem zmiennej ................................................................................................... 93
JavaScript w stylu Rails ........................................................................................... 94
Fragmenty jako atomy i molekuäy .............................................................................. 95
Wybór odpowiednich fragmentów .............................................................................. 97
Widok to nie tylko HTML .......................................................................................... 99
Kontroler ................................................................................................................... 100
CRUD do wielokrotnego zastosowania .................................................................... 101
Rusztowanie w Rails to zbiór operacji CRUD ............................................................ 102
Obsäuga akcji dwukrokowych .................................................................................. 103
Kiedy przekazaè prace na zewnñtrz ......................................................................... 106
Kiedy refaktoryzowaè ............................................................................................. 110
Podsumowanie .......................................................................................................... 111
RozdziaÄ 5. PiÂkne interfejsy aplikacji ...................................................................................................113
Dwa wielkie pomysäy na Web API ................................................................................. 115
Nowy adres URL — adresacja zagadnieþ, nie plików ................................................ 115
Aplikacja to interfejs .............................................................................................. 117
Odwzorowania adresów ............................................................................................... 118
Anatomia wywoäania Web API ...................................................................................... 121
Nakäadanie API ........................................................................................................... 121
Metoda respond_to ............................................................................................... 122
Zapis wyniku w formacie innym ni HTML ................................................................ 124
Spis treÊci
7
Dodanie wäasnych typów MIME .................................................................................... 127
Rejestracja typów w Rails ...................................................................................... 128
Tworzenie wäasnego typu MIME .............................................................................. 129
Ograniczanie dostöpu do API w sposób zgodny z Rails ................................................... 129
Uwierzytelnienie u ytkownika ................................................................................. 130
Algorytm ograniczajñcy .......................................................................................... 131
Wprowadzenie ograniczeþ za pomocñ filtrów ........................................................... 132
Co z usäugami SOAP i XML-RPC ................................................................................... 133
Interfejs usäugi ...................................................................................................... 134
Implementacja usäugi ............................................................................................ 135
Tworzenie struktur ................................................................................................. 136
Podsumowanie .......................................................................................................... 137
RozdziaÄ 6. Zasoby i REST .......................................................................................................................139
Sieè zasobów ............................................................................................................. 141
Identyfikacja zasobów ........................................................................................... 141
Mówienie o zasobach ............................................................................................ 142
Reprezentacja zasobów ......................................................................................... 142
REST ......................................................................................................................... 143
HTTP, czyli CRUD dla zasobów ............................................................................... 144
Definiowanie aplikacji w kategorii zasobów .............................................................. 146
Komunikacja z klientem, czyli zasoby jako API ......................................................... 151
Inny sposób, czyli sieè to komputer ........................................................................ 151
REST i Rails ............................................................................................................... 153
Odwzorowanie zasobów w routerze ......................................................................... 153
Poniewa wiat nie jest idealny, nadal potrzebujemy odwzorowaþ nazwanych ............. 154
Automatycznie tworzone odwzorowania ................................................................... 156
Rusztowanie dla zasobów ...................................................................................... 158
Zagnie d one zasoby ............................................................................................. 158
Zasoby jako singletony czy zasoby tradycyjne .......................................................... 161
Podsumowanie .......................................................................................................... 162
RozdziaÄ 7. PiÂÀ stylów AJAX-a .............................................................................................................163
Wielkie sekrety .......................................................................................................... 165
Niekoniecznie AJAX stanowi najtrudniejszy element systemu .................................... 165
AJAX wymaga podjöcia trudnych decyzji projektowych .................................................... 166
Nawet w Rails mo na zdecydowaè siö na wäasnñ bibliotekö JavaScriptu .................... 167
Piöè stylów AJAX-a ...................................................................................................... 169
Styl po rednika ..................................................................................................... 171
Styl fragmentowy .................................................................................................. 173
Styl marionetkowy ................................................................................................. 175
Kompilacja do JavaScriptu ..................................................................................... 177
Styl bezpo redniej edycji w aplikacji ........................................................................ 179
AJAX jako jeszcze jeden interfejs programistyczny ......................................................... 181
AJAX w stylu Rails ...................................................................................................... 183
Kontroler ajaksowy ze stylem fragmentowym (i AJAX CRUD) ...................................... 183
Kontrolery ajaksowe ze stylem marionetkowym (i RJS) ............................................. 186
Elegancka degradacja ................................................................................................. 189
Cofanie siö ze stylu fragmentowego ........................................................................ 189
Wycofywanie siö z bogatych interfejsów u ytkownika ................................................ 191
Podsumowanie .......................................................................................................... 192
8
Rails. Sztuka programowania
RozdziaÄ 8. Zabawa z blokami ................................................................................................................193
Bloki jako sposób programowania ............................................................................... 196
Porównanie metod, procedur i bloków .......................................................................... 200
Metody ................................................................................................................. 200
Procedury ............................................................................................................. 204
Bloki .................................................................................................................... 205
Przenoszenie siö miödzy blokami i procedurami ....................................................... 206
Du y eksperyment z zasiögiem .................................................................................... 207
Eksperyment 1. — na bloki wpäywa zmiana ich rodowiska ródäowego ..................... 208
Eksperyment 2. — bloki mogñ wpäynñè na rodowisko, z którego siö wywodzñ ........... 210
Wzorce blokowe i bloki w Rails .................................................................................... 212
Iteracja ................................................................................................................ 212
Programowanie aspektowe .................................................................................... 214
Tworzenie danych wyj ciowych w HTML-u i XML-u ..................................................... 218
Funkcje o podwójnym zastosowaniu ........................................................................ 220
Wywoäania zwrotne ................................................................................................ 220
Podsumowanie .......................................................................................................... 222
RozdziaÄ 9. Mieszanie i Äatanie klas ......................................................................................................223
Doäñczenia ................................................................................................................. 225
Organizacja kodu w formie moduäów ....................................................................... 225
Metody w moduäach .............................................................................................. 227
Doäñczanie moduäów do klas .................................................................................. 228
Doäñczenia w Rails ................................................................................................ 232
Maäpie äatanie ............................................................................................................ 236
Metoda eval — tyle drzwi do interpretera ................................................................ 237
Rodzeþstwo metody eval ....................................................................................... 239
Dobra technika tworzenia äat .................................................................................. 245
Podsumowanie .......................................................................................................... 249
RozdziaÄ 10. Kod, który pisze kod (który pisze kod) ............................................................................251
Jeszcze raz o dynamicznym kodzie i DSL ...................................................................... 253
Makra piszñce kod ..................................................................................................... 254
Tworzenie metod w locie za pomocñ define_method ................................................ 254
Przykäad u ycia define_method — Pentagon i Kreml ................................................. 255
Zasiög i define_method ......................................................................................... 257
Zastosowanie define_method w makrach Rails ........................................................ 258
Podsumowanie makr ............................................................................................. 260
Wywoäywanie nieistniejñcych metod — obiekty dostosowujñce siö
do sposobów korzystania z nich ................................................................................ 261
Kilka prostych przykäadów ...................................................................................... 262
Przykäad — skrót dla Array.each ............................................................................. 263
Uwa aj na wyäapywanie wszystkiego ....................................................................... 266
Wzorce metody method_missing ............................................................................ 267
Implementacja wzorców method_missing ................................................................ 268
Obiekty sterowane danymi — tworzenie täumacza komputerowego ............................ 272
Introspekcja ............................................................................................................... 274
Zmienne i staäe ..................................................................................................... 275
Metody ................................................................................................................. 276
Moduäy ................................................................................................................. 277
Podsumowanie .......................................................................................................... 278
Zgłoś jeśli naruszono regulamin