Rails pod Ruby Schemat Model – View - Controller.

Slides:



Advertisements
Podobne prezentacje
Przekształcanie dokumentów XML - XSL
Advertisements

Procedury wyzwalane Procedura wyzwalana (ang. trigger) - stanowi kod użytkownika przechowywany wewnątrz bazy i uruchamiany w określonych sytuacjach np.
Wzorce.
Rafał Hryniów Tomasz Pieciukiewicz
SQL INJECTION Wykorzystanie błędów w językach skryptowych
Wprowadzenie do języka skryptowego PHP – cz. 2
Kamil Smitkiewicz Bezpieczeństwo w PHP.
XHTML Podstawowe różnice.
XPath. XSLT – część XPath. XSLT – część 12 XPath – XML Path Language Problem: –jednoznaczne adresowanie fragmentów struktury dokumentu XML.
XSL – część 2.
XSL Extensible Stylesheet Language 6 listopada 2003.
MS Access 2000 Tworzenie tabel Piotr Górczyński 2005.
20/09/ Języki programowania 1 Piotr Górczyński Kreator form.
Serwery Aplikacji ASP .NET Web Objects Arkadiusz Popa.
Model – View - Controler
ODE Triggery. Wstęp n Triggery są trójką zdarzenie-warunek-akcja (event-condition- action). n Zdarzenia mogą być proste lub złożone, co zostanie omówione.
ODE Informacje wstępne. Pojęcia podstawowe n Obiektowa baza danych u język komunikacji u ziarnistość obiektów u identyfikacja obiektów n Transakcja -
Dokumentowanie wymagań w języku XML
Struktury.
ZSBD PL/SQL CZĘŚĆ 3 Wykład 5 Prowadzący: dr Paweł Drozda.
WYZWALACZE (TRIGGERY) Wyzwalacz jest specjalnym rodzajem procedury składowanej, która może być wykonana w odpowiedzi na jedną z trzech sytuacji: UPDATE.
SO – LAB3 Wojciech Pieprzyca
Wzorce projektowe w J2EE
1 Języki i techniki programowania prowadzący dr Grzegorz Filipczyk.
Język SQL (Structured Query Language) DDL (Data Definition Language)
Wprowadzenie do JSP Copyright © Politecnico di Milano September 2003 Translation: Kamil Żyła, Politechnika Lubelska.
Podstawy programowania II
O Rubym słów kilka… Simple Pinger O mnie: Maciej Mensfeld ruby
Instytut Tele- i Radiotechniczny WARSZAWA
Linux - polecenia.
Technologie tworzenia aplikacji internetowych Wykład 3
Otwieranie elementów w różnych ramkach
Prezentacja i szkolenie
SQL - Structured Query Language
Instrukcja USOSweb Wersja: Opracował: Sebastian Sieńko Plany zajęć dodatkowych pracownika.
Systemy wejścia i wyjścia Michał Wrona. Co to jest system wejścia i wyjścia? Pobierania informacji ze źródeł danych, zdolnych przesyłać sekwencje bajtów,
XML – eXtensible Markup Language
Podstawy informatyki 2013/2014
Komendy SQL do pracy z tabelami i bazami
Integracja iStore z programem Subiekt GT
Zawansowane techniki programistyczne
Systemy zarządzania treścią Wykład 5
Zpiratował Rafał Kaczyński. Jest to technologia pozwalająca mapować dane obiektowe na odpowiadające im struktury w bazach danych. Hibernate pozwala na.
PL/SQL – dalsza wędrówka
Projektowanie stron WWW
XML Publisher Przedmiot i zakres szkolenia Przedmiot i zakres szkolenia Przeznaczenie XML Publisher Przeznaczenie XML Publisher Definiowanie Definiowanie.
J A V A S C R I P T Obiekty Opracowała: Anna Śmigielska.
1 SBD, L.Banachowski Podstawy SQL - języka relacyjnych i obiektowo-relacyjnych baz danych (SQL2, SQL'1999, Oracle) Powtórzenie wyk ł adu 3.
Wydział Elektroniki Kierunek: AiR Zaawansowane metody programowania Wykład 5.
1 SBD, L.Banachowski Zaawansowane cechy SQL Powtórzenie wyk ł adu 5.
Projektowanie Aplikacji Internetowych Artur Niewiarowski Wydział Fizyki, Matematyki i Informatyki Politechnika Krakowska.
Portal edukacyjny A.Ś. FORMULARZE W JĘZYKU HTML. Portal edukacyjny A.Ś. Obiekty umieszczane na stronach www Teksty Obrazy Odnośniki Tabele Ramki pływające.
AngularJS –wprowadzenie do framework-a
Piotr Czapiewski Wydział Informatyki ZUT. Web Services Description Language.
Waldemar Bartyna 1 Programowanie zaawansowane LINQ to XML.
Wykład 4 Dr Aneta Polewko-Klim Dr Aneta Polewko-Klim
Wykład 3 Prowadzący: dr Paweł Drozda. Użytkownik bazy danych – osoba lub aplikacja, mająca dostęp do części danych zgromadzonych w bazie Uprawnienia –
Wykład 2 Programowanie obiektowe. Programowanie obiektowe wymaga dobrego zrozumienia działania funkcji definiowanych przez użytkownika, w ten sposób będziemy.
Object-relational mapping (aka O/RM, ORM, and O/R mapping)
ASP.NET Kontrolki źródła danych i prezentacji danych w ASP.Net
ASP.NET Dostęp do bazy danych z poziomu kodu Elżbieta Mrówka-Matejewska.
Prototypowanie w ORACLE DESIGNER Projektowanie Modułów.
Wykład 4 Dr Aneta Polewko-Klim Dr Aneta Polewko-Klim
Temat: Tworzenie bazy danych
Wzorzec MVC na przykładzie CakePHP
SQL Server Analysis Services Action!
T. 18. E Proces DGA - Działania (operatorka).
Krzysztof Ciebiera na podstawie
Projekt modułu BANK INTERNETOWY Moduł funkcji banku
Aplikacje i usługi internetowe
Zapis prezentacji:

Rails pod Ruby Schemat Model – View - Controller

Środowiska pracy Development Test Production Definicja połączeń z bazą danych w pliku database.yml Można definiować własne środowiska

Konwencje nazewnicze Klasy wielką literą + nowe wyrazy wielką Zmienne małą, wyrazy oddzielamy _ Nazwy plików.rb analogicznie jak zmienne Odpowiadające klasom tabele mają nazwę w formie mnogiej, z małych liter i wyrazy oddzielane _, np: LineItem line_items

Active Support Zestaw bibliotek dostępny dla każdego komponentu rails, np: - dodatki do wartości numerycznych(odd?, kilobytes, weeks,...) - daty (from_now, ago,...) - napisów (singularize, pluralize, inne mniej oryginalne,...)

Active support c.d. Wbudowany logger - logger.warn(Nie rób tego!) Testowanie i odpluskwianie - bezposredni dostep do danych poprzez irb (+ breakpointy) - dodatkowy loger STDERR (WEBrick) - funkcja debug(obiekt) wyświetla obiekty w zrozumiały sposób (XML)

Active Record Odwzorowuje wzajemnie dane z bazy i model (klasy) Zmiana w bazie automatycznie poprawia model Można wyłączyć :) dyrektywą set_table_name Problem z bool - forma ? - nadpisanie metody

Serializacja Klasy serializowane do tekstu (format YAML) - zdefiniowanie pola tekstowego w BD - dyrektywa serializacji serialize :nazwa_atrybutu - przypisanie dowolnego obiektu do danego atrybutu

Połączenie z BD Plik database.yml Nadpisanie metody ActiveRecord :: Base.establish_connection Różne parametry w zależności od rodzaju BD

BD CRUD cat.save i cat.save! Odczyt cat = Cat.find(id) cats = Cat.find(id_list) cats = Cat.find(:all, :conditions => tail = 'long' :order => name DESC) cats = Cat.find_all_by_tail('long') cats = Cat.find_by_tail_and_head('long', 'heavy')

...rUD W przypadku szukania po kluczu może wyrzucić wyjątek cat.reload update(5, :pseudo => nowe) update_all(cena = 2*cena,kolor like '%cz%') delete(ids), delete_all(warunki)

Transakcje Pojedyncze intrukcje w obrębie transakcji, także dla zależności Brak wsparcia dla dwufazowego potwierdzenia(two-phase commits) Zagnieżdżone transakcje Cats.transaction do end Cats.transaction(obj1, obj2,...) do end

Walidacja validate() zawsze przed zapisem validate_on_create(), validate_on_update() można się zapytać metodą valid?() def validate_on_create if self.find_by_name(name) errors.add(:name, is already being used) end end

Callbacks

Obserwator Podklasa ActiveRecord ::Observer Domyślnie StajniaObserver obserwuje zdarzenia w stajni Można samodzielnie określić obserwowane modele metodą: observe Cat, Dog, Payment

Zaawansowane atrybuty AR Mapa atrybutów Dostęp przez read_attribute() przechowuje dane o typie Konwersja wewnątrz akcesora def netto Float(read_attribute(wartosc_netto)) end

Id w klasach modelu Porównywanie '==' objektów-modeli na podstawie id Id jest ustalane dopiero po zapisaniu Id jest potrzebne do aktualizacji, cichy błąd

Action Controller Odpowiedź na żądanie Załadowanie controllers/store_controller.rb Stworzenie objektu StoreController Wstrzykniecie helpers/store_helper.rb do kontrolera Załadowanie models/store.rb jeśli istnieje

Mapowanie url config/routes.rb ziom.pl/store/add_to_cart/123 Własne wzorce dopasowania, np: map.connect ':controller/:action/:id' nazwane i nienazwane kontroler metoda parametr wywołania(tu id)

Rozpatrzenie akcji Jeśli odpowiadająca metoda nie jest zaimplementowa wywoływane jest method_missing() Jeśli Kontroler nie implementuje method_missing(), wywoływany jest template odpowiadający kontrolerowi z akcją Jeśli nie ma template'a zdefiniowanego otrzymujemy błąd: Uknown Action

Ciasteczka Ciasteczka w RoR: cookies[:the_time] = Time.now.to_s time = cookies[:the_time] Wartości przechowywane są w postaci łancuchów znakowych

Sesja Działa jak mapa, może przechowywać objekty dające się serializować Przechowuje flash Session_id przechowywany jest w ciasteczku Zmiany poprzez zmiany opcji sesji domyślnej

Flash Łącznik pomiędzy żądaniami, przechowywany w sesji Atrybuty note warning error Metody now – resetuje stan keep – zachowuje informacje do następnego żadania

Filtry i weryfikacja Rodzaje filtrów: before_filter: metoda after_filter: metoda around_filter: klasa z metodami before(controller), after(controller) Pierwsze dwa wywołania mają atrybuty :only i :except, określające akcje, których dotyczy filtr Weryfikatory jako wyszczególniony rodzaj filtrów

Template'y Odnajduje przy pomocy render() w domyślnym katalogu views/nazwa_kontrolera/nazwa_akcji Layouty aplikowane do każdej akcji kontrolera Przydatna funkcja html_escape() {= h()} - coś jak CDATA

Moduły pomocnicze Żeby nie umieszczać za dużo kodu w template'ach warto użyć modułu Helper. Metody Helpera są dostępne w template'ach i layout'ach Dla kontrolera lub aplikacji Wiele wbudowanych modułów udostepniających popularne funkcje pomocnicze

Testy Osobne środowisko(inny schemat) Elementy: Testy funkcjonalne kontrolerów Testy Active Record'ów. Odpala metody test_* w izolowanych scenariuszach Odwołania do Fixtures – nie ma duplikowania danych np. wew. asercji

Fixtures Definiują początkowe zawartość modelu np. definicję kilku przykładowych obiektów danej klasy christmas_book: id:1 title:It's Christmas! price:29,99 date:1.day.from_now

Inne funkcje Cache Na poziomie stron Na poziomie akcji Wbudowane wsparcie dla AJAX Action Mailer Web Services w postaci Action WS Nie do końca satysfakcjonuje specyfikację w3c Ma za zadanie dostarczyć popularną funkcjonalność, często wykorzystywaną w przyrodzie