rails.-sztuka-programowania helion.pdf

(8576 KB) Pobierz
888064766.001.png
6
Rails. Sztuka programowania
Wyzwalajce ograniczenia ........................................................................................ 58
Zbyt mocno si powtarzasz ...................................................................................... 60
Testowanie nie jest opcjonalne ................................................................................ 62
Sie to zbiór zasobów, a nie usug ............................................................................ 63
Podsumowanie ............................................................................................................ 64
Zoty rodek nie istnieje .......................................................................................... 65
Optymizuj swój sposób kodowania, zanim przystpisz 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
Przykad — portal spoecznociowy dla kucharzy ........................................................ 74
Zarzdzanie cyklem ycia aplikacji ................................................................................. 78
Myl w sposób lekki, nie inynieryjny ........................................................................ 78
Myl w sposób kontrolowany, a nie organiczny .......................................................... 79
Strze si operacji na otwartym sercu ....................................................................... 79
Podsumowanie ............................................................................................................ 80
Rozdzia 4. Osignicie jak najwikszych korzyci z M, V i C .............................................................. 81
Najlepsza dokumentacja interfejsów jest gratis ............................................................... 82
Model ......................................................................................................................... 83
Obiekty modeli powinny si nawzajem rozumie ......................................................... 84
Uyj wyjtków, by zwikszy 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 molekuy .............................................................................. 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
Obsuga akcji dwukrokowych .................................................................................. 103
Kiedy przekaza prace na zewntrz ......................................................................... 106
Kiedy refaktoryzowa ............................................................................................. 110
Podsumowanie .......................................................................................................... 111
Rozdzia 5. Pikne interfejsy aplikacji ...................................................................................................113
Dwa wielkie pomysy na Web API ................................................................................. 115
Nowy adres URL — adresacja zagadnie, nie plików ................................................ 115
Aplikacja to interfejs .............................................................................................. 117
Odwzorowania adresów ............................................................................................... 118
Anatomia wywoania Web API ...................................................................................... 121
Nakadanie API ........................................................................................................... 121
Metoda respond_to ............................................................................................... 122
Zapis wyniku w formacie innym ni HTML ................................................................ 124
Spis treci
7
Dodanie wasnych typów MIME .................................................................................... 127
Rejestracja typów w Rails ...................................................................................... 128
Tworzenie wasnego typu MIME .............................................................................. 129
Ograniczanie dostpu do API w sposób zgodny z Rails ................................................... 129
Uwierzytelnienie uytkownika ................................................................................. 130
Algorytm ograniczajcy .......................................................................................... 131
Wprowadzenie ogranicze za pomoc filtrów ........................................................... 132
Co z usugami SOAP i XML-RPC ................................................................................... 133
Interfejs usugi ...................................................................................................... 134
Implementacja usugi ............................................................................................ 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
Zagniedone 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 podjcia trudnych decyzji projektowych .................................................... 166
Nawet w Rails mona zdecydowa si na wasn bibliotek JavaScriptu .................... 167
Pi stylów AJAX-a ...................................................................................................... 169
Styl porednika ..................................................................................................... 171
Styl fragmentowy .................................................................................................. 173
Styl marionetkowy ................................................................................................. 175
Kompilacja do JavaScriptu ..................................................................................... 177
Styl bezporedniej 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 uytkownika ................................................ 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 midzy blokami i procedurami ....................................................... 206
Duy eksperyment z zasigiem .................................................................................... 207
Eksperyment 1. — na bloki wpywa zmiana ich rodowiska ródowego ..................... 208
Eksperyment 2. — bloki mog wpyn na rodowisko, z którego si wywodz ........... 210
Wzorce blokowe i bloki w Rails .................................................................................... 212
Iteracja ................................................................................................................ 212
Programowanie aspektowe .................................................................................... 214
Tworzenie danych wyjciowych w HTML-u i XML-u ..................................................... 218
Funkcje o podwójnym zastosowaniu ........................................................................ 220
Wywoania zwrotne ................................................................................................ 220
Podsumowanie .......................................................................................................... 222
Rozdzia 9. Mieszanie i atanie klas ...................................................................................................... 223
Doczenia ................................................................................................................. 225
Organizacja kodu w formie moduów ....................................................................... 225
Metody w moduach .............................................................................................. 227
Doczanie moduów do klas .................................................................................. 228
Doczenia w Rails ................................................................................................ 232
Mapie atanie ............................................................................................................ 236
Metoda eval — tyle drzwi do interpretera ................................................................ 237
Rodzestwo 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 piszce kod ..................................................................................................... 254
Tworzenie metod w locie za pomoc define_method ................................................ 254
Przykad uycia define_method — Pentagon i Kreml ................................................. 255
Zasig i define_method ......................................................................................... 257
Zastosowanie define_method w makrach Rails ........................................................ 258
Podsumowanie makr ............................................................................................. 260
Wywoywanie nieistniejcych metod — obiekty dostosowujce si
do sposobów korzystania z nich ................................................................................ 261
Kilka prostych przykadów ...................................................................................... 262
Przykad — skrót dla Array.each ............................................................................. 263
Uwaaj na wyapywanie wszystkiego ....................................................................... 266
Wzorce metody method_missing ............................................................................ 267
Implementacja wzorców method_missing ................................................................ 268
Obiekty sterowane danymi — tworzenie tumacza komputerowego ............................ 272
Introspekcja ............................................................................................................... 274
Zmienne i stae ..................................................................................................... 275
Metody ................................................................................................................. 276
Moduy ................................................................................................................. 277
Podsumowanie .......................................................................................................... 278
Spis treci
9
Rozdzia 11. Jak przestaem si martwi i pokochaem schemat bazy danych ................................. 279
Bazy danych w aplikacjach internetowych — stos LAMP ................................................ 280
Mylenie w kategoriach migracji .................................................................................. 282
Tworzenie migracji ................................................................................................. 284
Przeprowadzanie migracji danych ............................................................................ 286
Rozwój schematu w wikszym zespole ......................................................................... 286
Populacja bazy danymi produkcyjnymi .......................................................................... 288
Niewielkie zestawy danych — populacja danych w migracji ....................................... 289
Zestawy danych redniej wielkoci — pliki danych ................................................... 290
Due zestawy danych — pliki zrzutów bazy danych ................................................... 291
Gdy baza danych nie wystarcza .................................................................................... 293
Hierarchia obiektów modeli .................................................................................... 293
Przechowywanie list, sowników i innych elementów ................................................. 297
Wasne funkcje pobierajce i ustawiajce ............................................................... 299
Podsumowanie .......................................................................................................... 300
Rozdzia 12. RSpec programowanie sterowane zachowaniem ......................................................301
Programowanie sterowane zachowaniem ...................................................................... 303
RSpec — BDD dla Ruby on Rails ................................................................................. 305
Cykl programowania specyfikacji ............................................................................ 305
Pisanie specyfikacji ............................................................................................... 306
Implementacja przykadów ..................................................................................... 308
Dopasowania ........................................................................................................ 309
Wasne dopasowania ............................................................................................ 311
Przed i po ............................................................................................................. 313
Przykadowy cykl programowania .................................................................................. 314
Cz 1. Tworzenie historyjki ................................................................................. 314
Cz 2. Tworzenie specyfikacji ............................................................................. 315
Cz 3. Inicjalizacja i napisanie prostego testu ...................................................... 316
Cz 4. Tworzenie testów zachowa motywujcych do pisania kodu ........................ 318
Cz 5. Uzupenianie implementacji testów zachowa ............................................ 319
Ale to nie wszystko ..................................................................................................... 321
Podsumowanie .......................................................................................................... 322
Skorowidz .............................................................................................................................................. 323
Zgłoś jeśli naruszono regulamin