Cyfroteka.pl

klikaj i czytaj online

Cyfro
Czytomierz
00133 007539 11068895 na godz. na dobę w sumie
Rails. Przepisy - książka
Rails. Przepisy - książka
Autor: Liczba stron: 400
Wydawca: Helion Język publikacji: polski
ISBN: 83-246-0618-1 Data wydania:
Lektor:
Kategoria: ebooki >> komputery i informatyka >> webmasterstwo >> rails - programowanie
Porównaj ceny (książka, ebook, audiobook).

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

Rosnąca popularność aplikacji sieciowych, zastępujących w wielu zastosowaniach tradycyjne programy 'biurkowe', sprawia, że środowiska służące do szybkiego tworzenia takich programów stają się niezbędnymi narzędziami pracy programistów. Dostępne w sieci struktury -- frameworki -- pozwalają im skoncentrować się wyłącznie na implementacji zadań, jakie ma spełniać aplikacja, co zdecydowanie usprawnia pracę. Wśród takich środowisk coraz większe uznanie zyskuje Ruby on Rails -- bazujący na języku Ruby framework -- który sprowadza do minimum nakład pracy konieczny do zbudowania aplikacji sieciowej.

Książka 'Rails. Przepisy' to zbiór rozwiązań najczęściej wykonywanych zadań programistycznych przeznaczony dla tych twórców aplikacji, którzy w swojej pracy wykorzystują Ruby on Rails. Znajdziesz w niej porady, dzięki którym Twoja praca zyska na efektywności, a tworzone aplikacje będą szybsze i bezpieczniejsze. Przeczytasz o tworzeniu elementów interfejsu użytkownika, pobieraniu danych z baz, autoryzowaniu użytkowników, zarządzaniu sesjami i automatycznym generowaniu dokumentacji. Dowiesz się także, w jaki sposób przyspieszyć proces tworzenia aplikacji i jak zaimplementować w nich obsługę poczty elektronicznej.

Przekonaj się, jak wiele możesz zyskać, korzystając z nowoczesnych narzędzi.

Znajdź podobne książki Ostatnio czytane w tej kategorii

Darmowy fragment publikacji:

IDZ DO IDZ DO PRZYK£ADOWY ROZDZIA£ PRZYK£ADOWY ROZDZIA£ SPIS TREœCI SPIS TREœCI KATALOG KSI¥¯EK KATALOG KSI¥¯EK KATALOG ONLINE KATALOG ONLINE ZAMÓW DRUKOWANY KATALOG ZAMÓW DRUKOWANY KATALOG TWÓJ KOSZYK TWÓJ KOSZYK DODAJ DO KOSZYKA DODAJ DO KOSZYKA CENNIK I INFORMACJE CENNIK I INFORMACJE ZAMÓW INFORMACJE ZAMÓW INFORMACJE O NOWOœCIACH O NOWOœCIACH ZAMÓW CENNIK ZAMÓW CENNIK CZYTELNIA CZYTELNIA FRAGMENTY KSI¥¯EK ONLINE FRAGMENTY KSI¥¯EK ONLINE Wydawnictwo Helion ul. Koœciuszki 1c 44-100 Gliwice tel. 032 230 98 63 e-mail: helion@helion.pl Rails. Przepisy Autor: Chad Fowler T³umaczenie: Tomasz B¹k ISBN: 83-246-0618-1 Tytu³ orygina³u: Rails Recipes Format: B5, stron: 400 Zbiór gotowych rozwi¹zañ dla twórców aplikacji sieciowych (cid:129) Tworzenie interfejsów u¿ytkownika (cid:129) Po³¹czenia z bazami danych (cid:129) Przyspieszanie tworzenia aplikacji Rosn¹ca popularnoœæ aplikacji sieciowych, zastêpuj¹cych w wielu zastosowaniach tradycyjne programy „biurkowe”, sprawia, ¿e œrodowiska s³u¿¹ce do szybkiego tworzenia takich programów staj¹ siê niezbêdnymi narzêdziami pracy programistów. Dostêpne w sieci struktury — frameworki — pozwalaj¹ im skoncentrowaæ siê wy³¹cznie na implementacji zadañ, jakie ma spe³niaæ aplikacja, co zdecydowanie usprawnia pracê. Wœród takich œrodowisk coraz wiêksze uznanie zyskuje Ruby on Rails — bazuj¹cy na jêzyku Ruby framework — który sprowadza do minimum nak³ad pracy konieczny do zbudowania aplikacji sieciowej. Ksi¹¿ka „Rails. Przepisy” to zbiór rozwi¹zañ najczêœciej wykonywanych zadañ programistycznych przeznaczony dla tych twórców aplikacji, którzy w swojej pracy wykorzystuj¹ Ruby on Rails. Znajdziesz w niej porady, dziêki którym Twoja praca zyska na efektywnoœci, a tworzone aplikacje bêd¹ szybsze i bezpieczniejsze. Przeczytasz o tworzeniu elementów interfejsu u¿ytkownika, pobieraniu danych z baz, autoryzowaniu u¿ytkowników, zarz¹dzaniu sesjami i automatycznym generowaniu dokumentacji. Dowiesz siê tak¿e, w jaki sposób przyspieszyæ proces tworzenia aplikacji i jak zaimplementowaæ w nich obs³ugê poczty elektronicznej. (cid:129) Sortowalne listy rozwijane (cid:129) Tworzenie wykresów (cid:129) £¹czenie aplikacji z baz¹ danych (cid:129) Uwierzytelnianie u¿ytkowników (cid:129) Automatyczne testowanie aplikacji (cid:129) Generatory kodu (cid:129) Przetwarzanie grafiki (cid:129) Wysy³anie poczty elektronicznej Przekonaj siê, jak wiele mo¿esz zyskaæ, korzystaj¹c z nowoczesnych narzêdzi Wprowadzenie ....................................................................................7 Część I Przepisy na interfejs użytkownika ................................. 11 1. Edycja formularza w miejscu .......................................................13 2. Tworzenie własnej metody pomocniczej JavaScript .......................21 3. Podgląd dynamiczny ...................................................................29 4. Autouzupełnianie pola tekstowego ...............................................33 5. Tworzenie sortowalnych list typu przeciągnij i upuść .....................37 6. Aktualizacja wielu elementów w jednym żądaniu Ajax ..................45 7. Szybkie autouzupełnianie przy wykorzystaniu JavaScript ...............51 8. Tania i prosta obsługa motywów ..................................................57 9. Skracanie stron statycznych za pomocą Ajax ................................59 10. Inteligentna odmiana ...................................................................61 11. Debugowanie Ajax .....................................................................63 12. Tworzenie własnego konstruktora formularzy ................................65 13. Tworzenie ładnych wykresów ......................................................71 Część II Przepisy baz danych .......................................................... 77 14. Rails bez bazy danych ................................................................79 15. Łączenie się z wieloma bazami danych .........................................85 16. Integracja z bazami innych aplikacji .............................................95 17. Upraszczanie konfiguracji bazy danych ........................................99 4 Rails. Przepisy 18. Powiązania modelu wiele-do-wielu z samym sobą .......................103 19. Znakowanie zawartości .............................................................107 20. Wersjonowanie modeli ..............................................................115 21. Przejście na schematy oparte na migracjach ................................121 22. Powiązania wiele-do-wielu z dodatkowymi danymi .....................129 23. Powiązania polimorficzne — has_many :whatevers .....................135 24. Dodanie zachowań do powiązań Active Record .........................141 25. Dynamiczna konfiguracja bazy danych .......................................147 26. Używanie Active Record poza Rails .........................................149 27. Wykonywanie obliczeń na danych modelu ..................................151 28. Upraszczanie kodu Active Record poprzez zawężanie ................155 29. Inteligentne struktury danych z composed_of() ...........................157 30. Bezpieczne używanie modeli w migracjach .................................161 Część III Przepisy kontrolera ........................................................ 163 31. Uwierzytelnianie użytkowników .................................................165 32. Autoryzacja użytkowników za pomocą ról ..................................173 33. Porządkowanie kontrolerów za pomocą akcji zwrotnych ..............179 34. Monitorowanie wygasających sesji .............................................181 35. Renderowanie CSV w akcjach ..................................................185 36. Czytelne (i ładne) adresy URL .................................................187 37. Podwaliny uwierzytelniania .......................................................193 38. Przejście na sesje Active Record ................................................195 39. Pisanie kodu, który pisze kod ....................................................197 40. Zarządzanie stroną statyczną w Rails ........................................205 Część IV Przepisy testów ............................................................... 207 41. Tworzenie dynamicznych obiektów fixture dla testów ..................209 42. Tworzenie obiektów fixture na podstawie rzeczywistych danych ..... 215 43. Testowanie na przestrzeni wielu kontrolerów ..............................221 44. Pisanie testów dla metod pomocniczych .....................................229 Część V Przepisy ogólne ................................................................ 233 45. Automatyzacja tworzenia aplikacji poprzez własne generatory .....235 46. Ciągła integracja kodu ..............................................................243 47. Powiadamianie o nieobsłużonych wyjątkach ...............................249 Spis treści 5 48. Tworzenie własnych zadań Rake ...............................................255 49. Radzenie sobie ze strefami czasowymi ........................................263 50. Życie na krawędzi (rozwoju Rails) ............................................271 51. Syndykowanie strony poprzez RSS ...........................................277 52. Tworzenie własnych wtyczek Rails ............................................287 53. Sekretne URL-e ......................................................................293 54. Szybki podgląd zawartości sesji .................................................299 55. Współdzielenie modeli pomiędzy aplikacjami .............................301 56. Generowanie dokumentacji dla aplikacji .....................................305 57. Przetwarzanie przesłanych zdjęć ................................................307 58. Łatwe wyświetlanie list grupujących ...........................................313 59. Śledzenie tego, co kto zrobił ......................................................315 60. Dystrybucja aplikacji w postaci pojedynczego katalogu ................321 61. Dodawanie obsługi lokalizacji ....................................................325 62. Konsola jest Twoim przyjacielem ...............................................333 63. Automatyczny zapis szkicu formularza .......................................335 64. Walidacja obiektów spoza Active Record ...................................339 65. Proste białe listy HTML ..........................................................343 66. Dodawanie prostych usług sieciowych do naszych akcji ...............347 Część VI Przepisy poczty elektronicznej ..................................... 353 67. Wysyłanie poczty elektronicznej o bogatej treści ..........................355 68. Testowanie poczty przychodzącej ..............................................361 69. Wysyłanie wiadomości z załącznikami ........................................371 70. Obsługa zwrotów wiadomości ....................................................375 Dodatki .............................................................................. 383 A Zasoby .......................................................................................385 Skorowidz .......................................................................................387 Przepis 1. • Edycja formularza w miejscu 13 Problem Nasza aplikacja ma jeden lub więcej fragmentów danych, które są często edytowane przez użytkowników — zwykle bardzo szybko. Chcemy umoż- liwić użytkownikom łatwą edycję danych w miejscu, bez otwierania osob- nego formularza. Rozwiązanie Rails sprawia, że edycja w miejscu jest prosta dzięki kontrolce script.aculo.us InPlaceEditor i towarzyszących jej metodach pomocniczych. Przejdźmy od razu do rzeczy i wypróbujmy ją. Najpierw stworzymy model i kontroler, na którym zademonstrujemy jej działanie. Załóżmy, że tworzymy prostą książkę kontaktów. Poniżej znaj- duje się kod migracji Active Record, którego użyjemy do definicji schematu: InPlaceEditing/db/migrate/001_add_contacts_table.rb 14 Część I • Przepisy na interfejs użytkownika class AddContactsTable ActiveRecord::Migration def self.up create_table :contacts do |t| t.column :name, :string t.column :email, :string t.column :phone, :string t.column :address_line1, :string t.column :address_line2, :string t.column :city, :string t.column :state, :string t.column :country, :string t.column :postal_code, :string end end def self.down drop_table :contacts end end Następnie użyjemy domyślnie wygenerowanego modelu jako naszej klasy Contact. Aby szybko uruchomić nasz kod, wygenerujemy model, kontroler i widoki, wykorzystując generator rusztowania (scaffolding) Rails: chad ruby script/generate scaffold Contact exists app/controllers/ : : : create app/views/layouts/contacts.rhtml create public/stylesheets/scaffold.css Teraz możemy już uruchomić script/server, otworzyć w przeglądarce http://localhost:3000/contacts/ i dodać kilka wpisów. Po kliknięciu łącza Show przy dopiero co utworzonym wpisie powinna ukazać się prosta, po- zbawiona dekoracji strona prezentująca szczegóły danego wpisu w książce kontaktów. Na tej stronie dodamy naszą kontrolkę edycji w miejscu. Pierwszym krokiem do wykorzystania Ajax jest upewnienie się, że w naszych widokach dołączone są niezbędne pliki JavaScript. Gdzieś w sekcji head naszego dokumentu HTML możemy wywołać: = javascript_include_tag :defaults Zwykle umieszczamy tę deklarację w domyślnym szablonie aplikacji (app/ views/layouts/application.rhtml), aby nie martwić się o dołączenie jej (po- dobnie jak innych globalnych dla aplikacji ustawień, znaczników itd.) do każdego widoku, który tworzymy. Jeśli będziemy potrzebować efektów Ajax tylko w konkretnych sekcjach aplikacji, możemy zdecydować się na lokalne Przepis 1. • Edycja formularza w miejscu 15 dołączanie tych plików JavaScript. W naszym przypadku generator ruszto- wania utworzył dla nas szablon contacts.rhtml w katalogu app/views/layouts. Możemy załączyć JavaScript pod wywołaniem stylesheet_link_tag() w tym szablonie. Po otwarciu w edytorze app/views/contacts/show.rhtml domyślnie powin- niśmy zobaczyć coś takiego: InPlaceEditing/app/views/contacts/show.rhtml.default for column in Contact.content_columns p b = column.human_name : /b =h @contact.send(column.name) /p end = link_to Edit , :action = edit , :id = @contact | = link_to Back , :action = list Domyślnie widok show() iteruje w pętli po kolumnach modelu i wyświetla każdą z nich dynamicznie, wraz z etykietą i wartością. W przeglądarce wi- dzimy coś podobnego jak na poniższym rysunku (prosty widok rusztowania): Zacznijmy od tego pliku i dodajmy kontrolki edycji w miejscu do naszych pól. Najpierw usuniemy łącze Edit, ponieważ nie będziemy już go potrze- bować. Następnie opakujemy wyświetlaną wartość w wywołanie metody 16 Część I • Przepisy na interfejs użytkownika pomocniczej edytora w miejscu. Nasz show.rhtml powinien wyglądać nastę- pująco: InPlaceEditing/app/views/contacts/show.rhtml for column in Contact.content_columns p b = column.human_name : /b = in_place_editor_field :contact, column.name, {}, { :rows = 1, :cancel_text = anuluj } /p end = link_to Back , :action = list Mówimy metodzie pomocniczej in_place_editor_field(), że chcemy utwo- rzyć kontrolkę edycji dla zmiennej egzemplarza o nazwie @contact o atry- bucie, który właśnie przetwarza pętla iterująca po nazwach kolumn. Aby być bardziej konkretnym, gdyby nie dynamiczne działanie rusztowania, musielibyśmy stworzyć kontrolkę edycji dla nazwy kontaktu w następujący sposób: = in_place_editor_field :contact, :name Zwróćmy uwagę, że in_place_editor_field() oczekuje nazwy zmiennej egzemplarza jako swojego parametru, a nie samej zmiennej (dlatego uży- wamy :contact, a nie @contact). Po odświeżeniu strony show() i kliknięciu wartości kontaktu kontrolka edy- cji powinna automatycznie otworzyć w bieżącym widoku: Kliknięcie przycisku ok spowoduje zgłoszenie dużego, brzydkiego błędu JavaScript. Jest to zachowanie poprawne. Kontrolka edycji na miejscu utwo- rzyła formularz do edycji danych kontaktu, ale formularz ten nie zawiera odpowiadającej mu akcji. Spoglądając szybko w pliki dzienników aplikacji, zobaczymy linie: 127.0.0.1 . . . POST /contacts/set_contact_name/1 HTTP/1.1 404 581 Przepis 1. • Edycja formularza w miejscu 17 Aplikacja próbowała wywołać metodą POST akcję o nazwie set_contact_ name() (zwróćmy uwagę na konwencję nazewniczą) i otrzymała kod 404 (nie znaleziono) w odpowiedzi. Moglibyśmy teraz przejść do naszego ContactsController i zdefiniować metodę set_contact_name(), ale ponieważ robimy coś tak konwencjonal- nego, możemy zdać się na konwencję Rails, która wykona za nas całą robotę! Otwórzmy app/controllers/contacts_controller.rb i dodajmy nastę- pujący wiersz zaraz na początku definicji klasy (drugi wiersz będzie do- brym miejscem): in_place_edit_for :contact, :name Wróćmy teraz do przeglądarki, wyedytujmy nazwę kontaktu i ponownie kliknijmy ok. Dane zostaną zmienione, zapisane i wyświetlone ponownie. Wywołanie in_place_edit_for() dynamicznie definiuje akcję set_contact_ name(), która zaktualizuje za nas nazwę kontaktu. Inne atrybuty na stronie nadal nie będą działać, ponieważ nie poleciliśmy kontrolerowi wygenero- wać niezbędnych akcji. Moglibyśmy skopiować i wkleić wiersz, który wła- śnie dodaliśmy, zmieniając nazwy atrybutów. Ale ponieważ potrzebujemy kontrolek edycji dla wszystkich atrybutów modelu Contact, a rusztowanie już nam pokazało, w jaki sposób uzyskać nazwy kolumn modelu, zastosujmy się do zasady DRY (Don t Repeat Yourself — Nie powtarzaj się) i zamień- my istniejące wywołanie in_place_edit_for() w następujący sposób: InPlaceEditing/app/controllers/contacts_controller.rb Contact.content_columns.each do |column| in_place_edit_for :contact, column.name end Teraz wszystkie atrybuty powinny być poprawnie zapisywane poprzez kon- trolki edytora w miejscu. Jak już widzieliśmy, in_place_edit_for po prostu generuje odpowiednio nazwane akcje, które zajmują się aktualizacją danych. Gdybyśmy chcieli zaimplementować jakieś specjalne akcje obsługujące aktu- alizacje danych, moglibyśmy zdefiniować nasze własne akcje je obsługujące. Na przykład gdybyśmy potrzebowali specjalnego przetwarzania kodów pocztowych, moglibyśmy zdefiniować akcję set_contact_postal_code(). 18 Część I • Przepisy na interfejs użytkownika raise() jest Twoim przyjacielem Gdybym nie napisał, jak zaimplementować własne akcje edytora miej- scowego, skąd mógłbyś wiedzieć, co zrobić? Jak widzieliśmy w przepisie, możemy podejrzeć, jaką akcję próbuje wywołać kontrolka Ajax, przyglądając się logom serwera webowego. Ale ponieważ użyta jest metoda POST, nie widzimy parametrów w dziennikach. Jak się dowiedzieć, jakie parametry wykorzystuje au- tomatycznie wygenerowany formularz bez czytania stosów kodów źródłowych? Można stworzyć akcje o nazwie takiej, jaka pojawiła się w logach, która wygląda następująco: def set_contact_name raise params.inspect end Po przyciśnięciu przycisku wysyłającego formularz zobaczymy komu- nikat o błędzie Rails zawierający na samej górze listę przekazanych parametrów. Formularz kontrolki edytora w miejscu przekazuje dwa warte uwagi para- metry: identyfikator kontaktu, trafnie nazwany id, oraz nową wartość do zaktualizowania dla danego klucza — value. Kontrolka edytora w miejscu używa metody update_attribute() Active Record do wykonania aktualizacji bazy danych. Metoda ta pomija walidację modelu Active Record. Jeśli musimy wyko- nywać walidację dla każdej aktualizacji, musimy napisać wła- sne akcje obsługujące edytory w miejscu. Pola edycyjne działają, ale są dość brzydkie. Jak, na przykład, zwiększyć długość pola tekstowego? Zwłaszcza długi adres email lub imię mogłoby nie zmieścić się w polu tekstowym o domyślnej długości. Wiele metod pomoc- niczych Rails akceptuje dodatkowe parametry, które będą przekazywane bezpośrednio do renderowanych przez nie elementów HTML, co pozwala na prostą kontrolę takich ich parametrów jak długość. Przepis 1. • Edycja formularza w miejscu 19 InPlaceEditor działa nieco inaczej (niektórzy powiedzieliby, że lepiej). Ustawia domyślną nazwę klasy dla generowanego formularza HTML, której możemy użyć do wyboru stylu CSS. Aby więc dostosować długość generowanych pól tekstowych, moglibyśmy użyć następującego wpisu CSS: .inplaceeditor-form input[type= text ] { width: 260px; } Oczywiście, ponieważ używamy tu CSS, możemy wykonać wszystko, co jest możliwe w CSS. Omówienie Nasz przykład zakłada, że chcemy edytować wszystkie pola danych za pomocą pola tekstowego. W rzeczywistości możliwe jest wymuszenie na InPlaceEditor użycie albo pola tekstowego lub pola textarea , używając opcji :rows w czwartym parametrze metody in_place_editor_field(). Każda wartość większa od 1 spowoduje, że wygenerowane zostanie pole textarea . A co, jeśli chcemy dokonywać edycji za pomocą innych kontrolek teksto- wych? InPlaceEditor domyślnie nie zawiera nic odpowiedniego. W przepi- sie 2. powiemy, jak to zrobić. Poza tym, jak można się domyślić, InPlaceEditor nie pozwoli nam na edy- cję pola, gdy nie zawiera ono jeszcze wartości. To ograniczenie może być ominięte poprzez umieszczanie pustych pól z domyślnymi wartościami, takimi jak „Kliknij, aby wyedytować”.
Pobierz darmowy fragment (pdf)

Gdzie kupić całą publikację:

Rails. Przepisy
Autor:

Opinie na temat publikacji:


Inne popularne pozycje z tej kategorii:


Czytaj również:


Prowadzisz stronę lub blog? Wstaw link do fragmentu tej książki i współpracuj z Cyfroteką: