RailsSpace Tworzenie spolecznosciowych serwisow internetowych w Ruby on Rails.pdf

(696 KB) Pobierz
RailsSpace. Tworzenie
spoĀecznoľciowych
serwisw internetowych
w Ruby on Rails
Autor: Michael Hartl, Aurelius Prochazka
TĀumaczenie: Marcin RogŃ
ISBN: 978-83-246-1633-6
TytuĀ oryginaĀu: RailsSpace: Building a Social
Networking Website with Ruby on Rails
Format: 172x245, stron: 552
Poznaj Ruby on Rails i stwrz atrakcyjnĴ witrynķ spoĀecznoľciowĴ
¤ Jak konfigurowaě sesje bazodanowe?
¤ Na czym polega trasowanie komentarzy?
¤ W jaki sposb przygotowaě stronķ przesyĀania awatarw?
Serwisy spoĀecznoľciowe, ktre gromadzĴ ludzi o podobnych zainteresowaniach
i umoŃliwiajĴ komunikacjķ miķdzy znajomymi, cieszĴ siķ ogromnĴ i wciĴŃ rosnĴcĴ
popularnoľciĴ. Dziķki temu, Ńe pozwalajĴ na wymianķ opinii i uĀatwiajĴ podtrzymywanie
globalnych kontaktw, stajĴ siķ elementami strategii biznesowych i marketingowych wielu
firm. Do budowania takich serwisw doskonale nadaje siķ Rails, ktry oferuje klientom
witryny w peĀni dopasowane do potrzeb ich uŃytkownikw. Rails zostaĀ napisany
w dynamicznym obiektowym jķzyku Ruby z uŃyciem architektury MVC. Ten framework
wyrŃniajĴ przede wszystkim dwie reguĀy: reguĀa DRY, polegajĴca na unikaniu
wykonywania tej samej pracy w rŃnych miejscach, oraz reguĀa CoC., ktra pozwala
na zminimalizowanie niezbķdnej konfiguracji przez zastķpowanie jej gotowymi, domyľlnymi,
zalecanymi wzorcami. Rails umoŃliwia takŃe uŃycie wtyczek, rozszerzajĴcych aplikacje
o rozmaite funkcjonalnoľci np. logowanie, wrzucanie i skalowanie obrazkw czy tagowanie.
KsiĴŃka âRailsSpace. Tworzenie spoĀecznoľciowych serwisw internetowych w Ruby
on RailsÒ stanowi praktyczny kurs tworzenia interaktywnego serwisu spoĀecznoľciowego.
Za pomocĴ tego podrķcznika nauczysz siķ budowaě takĴ witrynķ, zaczynajĴc od statycznej
strony gĀwnej, przez utworzenie mechanizmu rejestracji i uwierzytelnienia uŃytkownikw,
a koĺczĴc na dynamicznej stronie WWW, z moŃliwoľciĴ przesyĀania obrazw i prowadzenia
blogw, oraz systemie dodawania znajomych.
¤ Konfigurowanie ľrodowiska programistycznego
¤ Modelowanie i rejestrowanie uŃytkownikw
¤ Testowanie
¤ Ochrona stron
¤ Zaawansowane logowanie
¤ Aktualizacja informacji uŃytkownika
¤ Tworzenie sieci spoĀecznej
¤ Awatary
¤ Model znajomoľci
¤ Blogi w technologii REST
¤ Komentarze do blogu w technologii AJAX
Samodzielnie zbuduj funkcjonalny serwis spoĀecznoľciowy!!!
Wydawnictwo Helion
ul. Koľciuszki 1c
44-100 Gliwice
tel. 032 230 98 63
e-mail: helion@helion.pl
945358021.051.png 945358021.055.png 945358021.056.png 945358021.057.png 945358021.001.png 945358021.002.png 945358021.003.png 945358021.004.png 945358021.005.png 945358021.006.png 945358021.007.png 945358021.008.png 945358021.009.png 945358021.010.png 945358021.011.png 945358021.012.png 945358021.013.png 945358021.014.png 945358021.015.png 945358021.016.png 945358021.017.png 945358021.018.png 945358021.019.png 945358021.020.png 945358021.021.png 945358021.022.png 945358021.023.png 945358021.024.png 945358021.025.png 945358021.026.png 945358021.027.png 945358021.028.png 945358021.029.png 945358021.030.png 945358021.031.png 945358021.032.png 945358021.033.png 945358021.034.png 945358021.035.png 945358021.036.png 945358021.037.png 945358021.038.png 945358021.039.png 945358021.040.png 945358021.041.png 945358021.042.png 945358021.043.png 945358021.044.png 945358021.045.png 945358021.046.png 945358021.047.png 945358021.048.png 945358021.049.png 945358021.050.png 945358021.052.png
 
SPIS TREŚCI
5
S PIS TREŚCI
Spis rysunków .................................................................................................... 13
Podziękowania .................................................................................................. 17
Rozdział 1.
Wprowadzenie .................................................................................................. 19
1.1.
Dlaczego Rails? ...................................................................................... 19
1.1.1.
Produktywność chce być wolna .......................................... 20
1.1.2.
Ta produktywność nie jest wolna ....................................... 20
1.2.
Dlaczego ta książka? ............................................................................. 21
1.3.
Kto powinien przeczytać tę książkę? ................................................. 22
1.3.1.
Jak czytać tę książkę? ............................................................. 22
1.3.2.
Jak oglądać tę książkę? .......................................................... 23
1.4.
Kilka historii związanych z Rails ........................................................ 23
1.4.1.
Aure .......................................................................................... 23
1.4.2.
Michael ..................................................................................... 25
Część I
Podstawy ................................................................................. 29
Rozdział 2.
Zaczynamy ......................................................................................................... 31
2.1.
Przygotowania ....................................................................................... 31
2.1.1.
Konfigurowanie środowiska programistycznego ............ 33
2.1.2.
Praca z rails .............................................................................. 33
2.1.3.
Serwer deweloperski ............................................................. 35
2.2.
Nasze pierwsze strony ......................................................................... 37
2.2.1.
Generowanie kontrolera ....................................................... 38
2.2.2.
Kontroler Site .......................................................................... 41
2.2.3.
URL w Rails ............................................................................. 42
2.2.4.
Zmienianie trasy ..................................................................... 44
2.3.
Widoki w Rails ....................................................................................... 44
2.3.1.
Osadzony Ruby (ERb) ........................................................... 45
945358021.053.png 945358021.054.png
6
RAILSSPACE
2.4.
Układy ..................................................................................................... 47
2.4.1.
ERb, akcje i zmienne egzemplarza ...................................... 48
2.4.2.
Powtórka: podział strony ...................................................... 50
2.4.3.
Dodawanie nawigacji ............................................................ 50
2.4.4.
Tablice asocjacyjne ................................................................. 51
2.4.5.
Symbole ................................................................................... 52
2.4.6.
Dopracowywanie link_to ..................................................... 53
2.4.7.
Kwestia stylu ........................................................................... 54
2.4.8.
Dopracowywanie nawigacji ................................................. 55
2.4.9.
Znajdź coś dla siebie .............................................................. 55
2.5.
Programowanie ze stylem ................................................................... 56
Rozdział 3.
Modelowanie użytkowników ........................................................................ 61
3.1.
Tworzenie modelu User ....................................................................... 61
3.1.1.
Konfigurowanie bazy danych .............................................. 61
3.1.2.
Migracje i model User ........................................................... 64
3.1.3.
Pierwsza migracja użytkownika .......................................... 65
3.1.4.
Rake migracji .......................................................................... 66
3.2.
Walidacja modelu użytkownika ......................................................... 69
3.2.1.
Konsola .................................................................................... 70
3.2.2.
Prosta walidacja ...................................................................... 71
3.2.3.
Walidacje w akcji .................................................................... 75
3.2.4.
Poprawianie walidacji ........................................................... 75
3.2.5.
Porządne walidacje ................................................................ 77
3.2.6.
Magiczne kolumny ................................................................ 80
3.3.
Dalsze kroki w celu zapewnienia integralności danych (?) ........... 82
Rozdział 4.
Rejestrowanie użytkowników ....................................................................... 85
4.1.
Kontroler User ....................................................................................... 85
4.2.
Rejestracja użytkownika — widok ..................................................... 86
4.2.1.
Widok rejestracji — wygląd ................................................. 87
4.2.2.
Omówienie widoku rejestracji ............................................. 91
4.2.3.
Poprawianie formularza rejestracji ..................................... 93
4.2.4.
Zabawa z formularzami i funkcją debug ........................... 95
4.3.
Rejestracja użytkownika — akcja ....................................................... 97
4.3.1.
Komunikaty o błędach formularza ................................... 103
4.3.2.
Flash ....................................................................................... 108
4.3.3.
Ukończona funkcja register ................................................ 110
4.3.4.
Zarys głównej strony użytkownika .................................. 111
4.4.
Dołączanie rejestracji .......................................................................... 113
4.4.1.
Pliki pomocnicze .................................................................. 115
4.5.
Przykładowy użytkownik .................................................................. 118
Rozdział 5.
Rozpoczynamy testowanie ........................................................................... 119
5.1.
Nasza filozofia testowania ................................................................. 120
5.2.
Konfiguracja testowej bazy danych ................................................. 120
SPIS TREŚCI
7
5.3.
Testowanie kontrolera Site ................................................................ 121
5.3.1.
Niebanalny test ..................................................................... 122
5.3.2.
Nadmiar testów? .................................................................. 125
5.4.
Testowanie rejestracji ......................................................................... 126
5.4.1.
Uruchamianie testów funkcjonalnych ............................. 126
5.4.2.
Podstawowe testy rejestracji .............................................. 126
5.4.3.
Testowanie rejestracji zakończonej powodzeniem ........ 129
5.4.4.
Testowanie rejestracji
zakończonej niepowodzeniem .......................................... 130
5.4.5.
Uruchamianie testów .......................................................... 133
5.4.6.
Więcej testów rejestracji? .................................................... 133
5.5.
Podstawowe testy modelu User ....................................................... 133
5.5.1.
Podstawowe testy walidacji ............................................... 135
5.6.
Szczegółowe testy modelu User ....................................................... 137
5.6.1.
Testowanie niepowtarzalności .......................................... 138
5.6.2.
Testowanie długości pseudonimu .................................... 139
5.6.3.
Skorzystaj z konsoli ............................................................. 140
5.6.4.
Testowanie długości hasła .................................................. 142
5.6.5.
Testowanie wyrażeń regularnych ..................................... 144
5.6.6.
Uruchamianie wszystkich testów ...................................... 151
Rozdział 6.
Logowanie i wylogowywanie ...................................................................... 153
6.1. Utrzymywanie stanu za pomocą sesji ............................................. 154
6.1.1. Konfigurowanie sesji bazodanowych ............................... 154
6.2. Logowanie ............................................................................................ 156
6.2.1. Rejestrowanie stanu zalogowania ..................................... 156
6.2.2. Logowanie po zarejestrowaniu ......................................... 156
6.2.3. Debugowanie ze zmienną sesji .......................................... 157
6.2.4. Widok i akcja logowania ..................................................... 162
6.2.5. Testowanie poprawnego logowania ................................. 165
6.2.6. Testowanie nieprawidłowego logowania ........................ 167
6.3. Wylogowanie ....................................................................................... 168
6.3.1. Testowanie wylogowania ................................................... 169
6.3.2. Testowanie nawigacji .......................................................... 170
6.4. Ochrona stron ...................................................................................... 173
6.4.1. Chronienie stron w głupi sposób ...................................... 173
6.4.2. Chronienie stron w mądry sposób .................................... 173
6.4.3. Testowanie chronienia ........................................................ 176
6.5. Przyjazne przekazywanie URL .............................................................. 178
6.5.1.
Zmienna request .................................................................. 178
6.5.2.
Przyjazne przekierowywanie po zalogowaniu ............... 181
6.5.3.
Przyjazne przekierowywanie po rejestracji ..................... 183
6.5.4.
Przyjazne testowanie ........................................................... 184
8
RAILSSPACE
6.6.
Refaktoryzacja podstawowego logowania ..................................... 185
6.6.1.
Zalogowany? ......................................................................... 186
6.6.2.
Zaloguj! .................................................................................. 190
6.6.3.
Wyloguj! ................................................................................ 193
6.6.4.
Wyczyść hasło! ...................................................................... 194
6.6.5.
Obsługa formularza bez powtórzeń ................................. 197
6.6.6.
Przyjazne przekierowania bez powtórzeń ...................... 198
6.6.7.
Sprawdzamy poprawność .................................................. 200
Rozdział 7.
Zaawansowane logowanie ............................................................................ 201
7.1.
A więc chcesz być zapamiętany? ...................................................... 201
7.1.1.
Pole opcji „zapamiętaj mnie” ............................................. 202
7.1.2.
Atrybut „pamiętaj mnie” ..................................................... 205
7.1.3.
Cookie „pamiętaj mnie” ...................................................... 206
7.2.
Faktyczne zapamiętywanie użytkownika ....................................... 213
7.2.1.
Cookie uwierzytelniające .................................................... 214
7.2.2.
Pamiętanie, że zapamiętaliśmy .......................................... 216
7.2.3.
Aktualizacja logout .............................................................. 218
7.2.4.
Bardziej bezpieczny plik cookie ........................................ 220
7.2.5.
Ukończone (?) funkcje ......................................................... 222
7.3.
Testy zapamiętywania użytkowników ............................................ 224
7.3.1.
Poprawione testy logowania .............................................. 224
7.3.2.
Poprawiona funkcja wylogowania ................................... 230
7.4.
Testy zaawansowane — testowanie integracji ............................... 230
7.4.1.
Testowanie pamiętania cookie — pierwsze cięcie .......... 231
7.4.2.
Testowanie testu — opowieść ku przestrodze ................ 233
7.4.3.
Kilka refleksji dotyczących testowania w Rails ............... 235
7.5.
Ponowna refaktoryzacja .................................................................... 235
7.5.1.
Refaktoryzacja remember ................................................... 236
7.5.2.
Refaktoryzacja forget ........................................................... 239
7.5.3.
Jeszcze dwie poprawki ........................................................ 240
7.5.4.
W pełni zrefaktoryzowana funkcja login ......................... 241
7.5.5.
Kilka końcowych przemyśleń ............................................ 244
Rozdział 8.
Aktualizacja informacji użytkownika ........................................................ 245
8.1.
Sensowniejsza strona centrum użytkownika ................................. 246
8.2.
Aktualizacja adresu e-mail ................................................................. 246
8.3.
Aktualizacja hasła ................................................................................ 248
8.3.1.
Obsługa przesyłania haseł .................................................. 253
8.4.
Testowanie edycji informacji o użytkownikach ............................ 257
8.4.1.
Funkcje pomocnicze dla testów ......................................... 259
8.4.2.
Testowanie strony edycji .................................................... 262
8.4.3.
Zaawansowany test ............................................................. 263
Zgłoś jeśli naruszono regulamin