E-book details

Rails. Receptury

Rails. Receptury

Rob Orsini

Ebook

Zbiór gotowych rozwiązań dla twórców aplikacji internetowych

  • Instalacja i uruchomienie środowiska Rails
  • Przetwarzanie grafiki
  • Korzystanie z technologii AJAX

Dynamiczny rozwój sieci sprawia, że tradycyjne programy są stopniowo wypierane przez aplikacje sieciowe dostępne z poziomu przeglądarki internetowej -- wygodne, niezależne od systemu operacyjnego i łatwe w aktualizowaniu. Nadal jednak kluczowe znaczenie ma szybkość ich przygotowywania i modyfikowania. Dzięki zbiorom bibliotek zwanym "frameworks" proces tworzenia takich produktów znacznie się skrócił -- umożliwia to programistom skoncentrowanie się na faktycznej funkcjonalności tworzonego narzędzia, ponieważ biblioteki te przejmują wiele typowych i wspólnych dla wszystkich aplikacji zadań. Wśród dostępnych w sieci narzędzi tego typu coraz większą popularność zyskuje Ruby on Rails, powoli stający się "ikoną" nurtu Web 2.0. Tworzone za jego pomocą systemy są zwarte i łatwe do skalowania, a ich kod źródłowy jest przejrzysty i czytelny.

"Rails. Receptury" to zestaw porad i rozwiązań problemów, przed którymi stają programiści stosujący ten zbiór bibliotek w swojej pracy. Omówione tu zagadnienia przydadzą się zarówno początkującym, jak i doświadczonym twórcom aplikacji sieciowych. Przeczytasz tu o instalowaniu, konfigurowaniu i uruchamianiu środowiska Rails, połączeniach z bazami danych za pomocą ActiveRecord, generowaniu kodu HTML, zabezpieczaniu programów i tworzeniu kontrolerów odpowiadających za funkcjonalność systemu. Dowiesz się, jak wdrażać aplikacje Rails i korzystać w nich z możliwości oferowanych przez mechanizmy AJAX.

  • Instalacja i uruchomienie środowiska
  • Komunikacja z bazami danych
  • Wyświetlanie danych w przeglądarce
  • Wykorzystywanie szablonów RHTML
  • Generowanie kodu XML i RSS
  • Przetwarzanie danych z formularzy
  • Personalizacja narzędzi
  • Korzystanie z JavaScript i AJAX
  • Zabezpieczanie aplikacji Rails
  • Optymalizacja aplikacji
  • Wdrażanie i utrzymywanie systemów na serwerach
  • Przetwarzanie obrazów

Skorzystaj ze sprawdzonych receptur i dołącz do twórców Web 2.0!

Przedmowa (9)

Wstęp (11)

1. Zaczynamy (17)

  • 1.1. Społeczność Rails (18)
  • 1.2. Szukanie dokumentacji (20)
  • 1.3. Instalacja MySQL (21)
  • 1.4. Instalacja PostgreSQL (24)
  • 1.5. Instalacja Rails (26)
  • 1.6. Zmiana wersji Ruby i instalacja Rails w systemie OS X Tiger (28)
  • 1.7. Uruchamianie Rails w systemie OS X za pomocą Locomotive (30)
  • 1.8. Uruchamianie Rails w systemie Windows za pomocą Instant Rails (32)
  • 1.9. Aktualizacja Rails za pomocą RubyGems (34)
  • 1.10. Utworzenie repozytorium Subversion własnego projektu Rails (35)

2. Praca w Rails (39)

  • 2.1. Tworzenie projektu Rails (39)
  • 2.2. Rozpoczynamy pracę z rusztowaniami (41)
  • 2.3. Przyspieszanie Rails za pomocą serwera Mongrel (45)
  • 2.4. Zwiększanie możliwości produkcyjnych w systemie Windows za pomocą Cygwin (47)
  • 2.5. Wzorce pluralizacyjne w Rails (48)
  • 2.6. Praca w Rails w systemie OS X za pomocą TextMate (51)
  • 2.7. Wieloplatformowe tworzenie aplikacji z RadRails (53)
  • 2.8. Instalacja i uruchamianie Edge Rails (54)
  • 2.9. Uwierzytelnianie bezhasłowe za pomocą SSH (56)
  • 2.10. Tworzenie dokumentacji RDoc do własnej aplikacji Rails (57)
  • 2.11. Tworzenie w pełni funkcjonalnej aplikacji CRUD za pomocą Streamlined (60)

3. Active Record (65)

  • 3.1. Przygotowanie relacyjnej bazy danych do pracy z Rails (66)
  • 3.2. Programowe definiowanie schematu bazy danych (69)
  • 3.3. Zarządzanie bazą za pomocą migracji (71)
  • 3.4. Modelowanie bazy danych za pomocą Active Record (75)
  • 3.5. Kontrola relacji modelu z konsoli Rails (78)
  • 3.6. Dostęp do danych za pośrednictwem Active Record (81)
  • 3.7. Wyszukiwanie rekordów przy użyciu find (82)
  • 3.8. Iteracja na zestawie wyników Active Record (85)
  • 3.9. Wydajne pobieranie danych przy użyciu wczesnego wczytywania (88)
  • 3.10. Aktualizowanie obiektu Active Record (91)
  • 3.11. Wymuszanie spójności danych przy użyciu walidacji Active Record (95)
  • 3.12. Wykonywanie własnych zapytań za pomocą find_by_sql (98)
  • 3.13. Ochrona przed sytuacjami wyścigu za pomocą transakcji (102)
  • 3.14. Dodawanie do modelu możliwości sortowania przy użyciu acts_as_list (106)
  • 3.15. Wykonywanie zadań przy każdorazowym tworzeniu obiektów modelu (110)
  • 3.16. Modelowanie wątkowanego forum przy użyciu acts_as_nested_set (113)
  • 3.17. Tworzenie katalogu zagnieżdżonych tematów za pomocą acts_as_tree (117)
  • 3.18. Unikanie sytuacji wyścigu przy użyciu blokowania optymistycznego (120)
  • 3.19. Obsługa tabel z odziedziczoną konwencją nazewniczą (122)
  • 3.20. Automatyczny zapis sygnatur czasowych (123)
  • 3.21. Wydzielanie wspólnych relacji za pomocą powiązań polimorficznych (125)
  • 3.22. Połączenie modeli łączących i polimorfizmu w celu elastycznego modelowania danych (128)

4. Action Controller (133)

  • 4.1. Dostęp do danych formularza z kontrolera (134)
  • 4.2. Zmiana strony domyślnej aplikacji (137)
  • 4.3. Zwiększanie przejrzystości kodu za pomocą nazwanych tras (138)
  • 4.4. Konfigurowanie własnych zachowań wyboru tras (139)
  • 4.5. Wyświetlanie komunikatów alarmowych za pomocą flash (141)
  • 4.6. Przedłużanie okresu trwania komunikatu flash (143)
  • 4.7. Podążanie za akcjami za pomocą przekierowań (144)
  • 4.8. Dynamiczne generowanie adresów URL (146)
  • 4.9. Kontrolowanie żądań za pomocą filtrów (147)
  • 4.10. Rejestracja zdarzeń z wykorzystaniem filtrów (149)
  • 4.11. Renderowanie akcji (151)
  • 4.12. Ograniczanie dostępu do metod kontrolera (153)
  • 4.13. Wysyłanie do przeglądarki plików lub strumieni danych (154)
  • 4.14. Przechowywanie informacji o sesji w bazie danych (155)
  • 4.15. Śledzenie informacji za pomocą sesji (157)
  • 4.16. Uwierzytelnianie z użyciem filtrów (160)

5. Action View (165)

  • 5.1. Upraszczanie szablonów za pomocą metod pomocniczych (166)
  • 5.2. Wyświetlanie obszernych zbiorów danych za pomocą stronicowania (168)
  • 5.3. Tworzenie lepkich list wyboru (171)
  • 5.4. Edycja relacji wiele-do-wielu za pomocą list wielokrotnego wyboru (173)
  • 5.5. Wyodrębnianie wspólnego kodu prezentacyjnego za pomocą makiet (176)
  • 5.6. Definiowanie domyślnej makiety dla aplikacji (179)
  • 5.7. Generowanie kodu XML za pomocą szablonów Builder (180)
  • 5.8. Generowanie źródeł RSS z danych Active Record (181)
  • 5.9. Ponowne wykorzystanie elementów za pomocą podszablonów (184)
  • 5.10. Przetwarzanie pól wejściowych tworzonych dynamicznie (187)
  • 5.11. Dostosowywanie zachowań standardowych metod pomocniczych (190)
  • 5.12. Tworzenie formularzy WWW z wykorzystaniem metod pomocniczych (192)
  • 5.13. Format daty, czasu i waluty (196)
  • 5.14. Personalizacja profili użytkowników za pomocą grawatarów (198)
  • 5.15. Unikanie szkodliwego kodu w widokach za pomocą szablonów Liquid (200)
  • 5.16. Globalizacja aplikacji Rails (204)

6. Projektowanie z REST (209)

  • 6.1. Tworzenie zagnieżdżonych zasobów (211)
  • 6.2. Obsługa innych formatów danych za pomocą typów MIME (216)
  • 6.3. Modelowanie relacji REST przy użyciu modeli łączących (218)
  • 6.4. Poszerzanie możliwości CRUD za pomocą zasobów REST (221)
  • 6.5. Korzystanie ze złożonych zagnieżdżonych zasobów REST (224)
  • 6.6. Tworzenie aplikacji Rails zgodnie z REST (227)

7. Testowanie aplikacji (233)

  • 7.1. Centralizacja tworzenia obiektów wspólnych dla przypadków testowych (234)
  • 7.2. Tworzenie obiektów fixture dla przyporządkowań typu wiele-do-wielu (235)
  • 7.3. Importowanie danych testowych za pomocą obiektów fixture CSV (237)
  • 7.4. Dołączanie dynamicznych danych do obiektów fixture za pomocą ERb (239)
  • 7.5. Inicjalizacja testowej bazy danych (241)
  • 7.6. Interaktywne testowanie kontrolerów z poziomu konsoli Rails (243)
  • 7.7. Interpretacja danych z testu jednostkowego (244)
  • 7.8. Ładowanie danych testowych za pomocą obiektów fixture YAML (245)
  • 7.9. Monitorowanie testu pokrycia za pomocą zadania stats rake (248)
  • 7.10. Przeprowadzanie testów za pomocą narzędzia Rake (249)
  • 7.11. Przyspieszanie testów za pomocą transakcyjnych obiektów fixture (250)
  • 7.12. Sprawdzanie przez kontrolery za pomocą testów integracyjnych (252)
  • 7.13. Sprawdzanie kontrolerów za pomocą testów funkcjonalnych (255)
  • 7.14. Analiza zawartości pliku cookie (258)
  • 7.15. Testowanie tras własnych i nazwanych (260)
  • 7.16. Testowanie żądań HTTP za pomocą asercji związanych z odpowiedziami (262)
  • 7.17. Sprawdzanie modelu za pomocą testów jednostkowych (263)
  • 7.18. Jednostkowe testowanie walidacji modelu (266)
  • 7.19. Weryfikacja struktury DOM za pomocą asercji znaczników (268)
  • 7.20. Pisanie własnych asercji (271)
  • 7.21. Testowanie wysyłania plików (272)
  • 7.22. Modyfikowanie domyślnego zachowania klasy testującej przy użyciu makiet (275)
  • 7.23. Uzyskiwanie większej ilości danych dzięki ciągłemu uruchamianiu testów (277)
  • 7.24. Analiza pokrycia kodu za pomocą narzędzia Rcov (279)

8. JavaScript i Ajax (283)

  • 8.1. Dodawanie do strony elementów DOM (284)
  • 8.2. Tworzenie własnego raportu metodą przeciągnij i upuść (287)
  • 8.3. Dynamiczne dodawanie elementów do listy wyboru (291)
  • 8.4. Kontrolowanie ilości tekstu wprowadzanego do pola textarea (294)
  • 8.5. Aktualizowanie elementów strony za pomocą szablonów RJS (297)
  • 8.6. Wstawianie kodu JavaScript do szablonów (299)
  • 8.7. Umożliwianie użytkownikom zmiany kolejności elementów listy (303)
  • 8.8. Autouzupełnianie pól tekstowych (306)
  • 8.9. Wyszukiwanie i dynamiczne wyróżnianie tekstu (308)
  • 8.10. Uatrakcyjnianie interfejsu użytkownika przy użyciu efektów wizualnych (312)
  • 8.11. Implementacja wyszukiwarki Live Search (316)
  • 8.12. Edycja pól w miejscu (319)
  • 8.13. Tworzenie paska postępu w Ajaksie (322)

9. Action Mailer (325)

  • 9.1. Konfiguracja Rails do wysyłania poczty (326)
  • 9.2. Tworzenie klasy mailera za pomocą generatora mailer (327)
  • 9.3. Formatowanie wiadomości e-mail przy użyciu szablonów (329)
  • 9.4. Dołączanie plików do wiadomości e-mail (330)
  • 9.5. Wysyłanie wiadomości e-mail z aplikacji Rails (331)
  • 9.6. Odbieranie poczty za pomocą mechanizmu Action Mailer (332)

10. Debugowanie aplikacji Rails (335)

  • 10.1. Eksploracja Rails z poziomu konsoli (336)
  • 10.2. Naprawianie błędów u źródła przy użyciu opcji Ruby -cw (338)
  • 10.3. Debugowanie aplikacji w czasie rzeczywistym przy użyciu punktów wstrzymania (340)
  • 10.4. Zapisywanie komunikatów do dziennika przy użyciu wbudowanej w Rails klasy Logger (343)
  • 10.5. Zapisywanie danych debugowania w pliku (346)
  • 10.6. Wysyłanie informacji o wyjątkach pocztą elektroniczną (348)
  • 10.7. Wyświetlanie w widokach informacji o środowisku (352)
  • 10.8. Wyświetlanie zawartości obiektów przy użyciu wyjątków (353)
  • 10.9. Filtrowanie zawartości dziennika rozwojowego w czasie rzeczywistym (354)
  • 10.10. Debugowanie połączenia HTTP przy użyciu rozszerzeń Firefoksa (356)
  • 10.11. Debugowanie kodu JavaScript w czasie rzeczywistym przy użyciu powłoki JavaScript Shell (358)
  • 10.12. Interaktywne debugowanie kodu za pomocą narzędzia ruby-debug (361)

11. Bezpieczeństwo aplikacji (365)

  • 11.1. Zabezpieczanie systemu za pomocą silnego hasła (365)
  • 11.2. Ochrona przed atakami typu SQL injection (367)
  • 11.3. Ochrona przed atakami typu cross-site scripting (369)
  • 11.4. Ograniczanie dostępu do publicznych metod i akcji (370)
  • 11.5. Zabezpieczanie serwera poprzez zamknięcie nieużywanych portów (372)

12. Wydajność (375)

  • 12.1. Mierzenie wydajności serwera za pomocą narzędzia httperf (376)
  • 12.2. Testowanie wydajności fragmentów kodu aplikacji (378)
  • 12.3. Zwiększanie wydajności poprzez buforowanie statycznych stron (380)
  • 12.4. Okres ważności buforowanych stron (383)
  • 12.5. Mieszanie treści dynamicznej i statycznej przy użyciu mechanizmu buforowania fragmentów (385)
  • 12.6. Filtrowanie buforowanych stron za pomocą buforowania akcji (388)
  • 12.7. Skracanie czasu dostępu do danych za pomocą systemu memcached (389)
  • 12.8. Zwiększanie wydajności poprzez buforowanie treści po przetworzeniu (392)

13. Hosting i wdrażanie (395)

  • 13.1. Hosting Rails na serwerze Apache 1.3 i przy użyciu mod_fastcgi (396)
  • 13.2. Zarządzanie wieloma procesami Mongrel przy użyciu mongrel_cluster (397)
  • 13.3. Hosting Rails na Apache 2.2, mod_proxy_balancer i Mongrel (400)
  • 13.4. Wdrażanie Rails przy użyciu Pound jako frontu dla Mongrel, Lighttpd i Apache (404)
  • 13.5. Dostosowywanie do własnych potrzeb rejestracji danych Pound za pomocą narzędzia cronolog (408)
  • 13.6. Konfiguracja Pound z obsługą SSL (411)
  • 13.7. Równoważenie obciążenia za pomocą prostego narzędzia o nazwie Pen (412)
  • 13.8. Wdrażanie projektu Rails przy użyciu Capistrano (414)
  • 13.9. Wdrażanie aplikacji w kilku środowiskach przy użyciu Capistrano (417)
  • 13.10. Wdrażanie przy użyciu Capistrano bez dostępu do systemu Subversion (419)
  • 13.11. Wdrażanie przy użyciu Capistrano i mongrel_cluster (421)
  • 13.12. Wyłączanie strony podczas prac konserwacyjnych (423)
  • 13.13. Pisanie własnych zadań Capistrano (426)
  • 13.14. Usuwanie pozostałości po sesjach (430)

14. Rozszerzanie Rails za pomocą wtyczek (433)

  • 14.1. Znajdywanie wtyczek (434)
  • 14.2. Instalowanie wtyczek (435)
  • 14.3. Manipulacja wersjami rekordów za pomocą wtyczki acts_as_versioned (437)
  • 14.4. Uwierzytelnianie przy użyciu wtyczki acts_as_authenticated (440)
  • 14.5. Upraszczanie znakowania za pomocą wtyczki acts_as_taggable (443)
  • 14.6. Rozszerzanie Active Record przy użyciu wtyczki acts_as (448)
  • 14.7. Dodawanie metod pomocniczych widoków do Rails jako wtyczek (453)
  • 14.8. Wysyłanie plików na serwer przy użyciu wtyczki file_column (455)
  • 14.9. Wysyłanie plików na serwer przy użyciu wtyczki acts_as_attachment (457)
  • 14.10. Wyłączanie rekordów zamiast ich usuwania za pomocą wtyczki acts_as_paranoid (461)
  • 14.11. Dodawanie bardziej wyrafinowanego mechanizmu uwierzytelniania przy użyciu wtyczki login_engine (463)

15. Grafika (467)

  • 15.1. Instalowanie interfejsu RMagick do przetwarzania obrazów (467)
  • 15.2. Wysyłanie obrazów do bazy danych (471)
  • 15.3. Serwowanie obrazków bezpośrednio z bazy danych (475)
  • 15.4. Tworzenie miniatur za pomocą RMagick (476)
  • 15.5. Generowanie dokumentów PDF (479)
  • 15.6. Wizualna prezentacja danych przy użyciu Gruff (481)
  • 15.7. Tworzenie małych grafów przy użyciu biblioteki Sparklines (484)

A Migracja do Rails 1.2 (487)

  • Action Controller (487)
  • Active Record (489)
  • Action View (489)

Skorowidz (491)

  • Title: Rails. Receptury
  • Author: Rob Orsini
  • Original title: Rails Cookbook
  • Translation: Łukasz Piwko, Leszek Sagalara
  • ISBN: 978-83-246-6157-2, 9788324661572
  • Date of issue: 2012-11-08
  • Format: Ebook
  • Item ID: railre
  • Publisher: Helion