EPI: Interfejs Graczny Podstawy Ruby on Rails



Podobne dokumenty
Laboratorium nr 3 Podstawy Ruby on Rails

Programowanie w Ruby

Programowanie w Ruby

EPI: Interfejs Graficzny Wykład nr 4 Podstawy frameworku Rails

Kurs języka Ruby. Ruby on Rails ActionPack

Ruby i Ruby on Rails. Mateusz Drożdżyński

EPI: Interfejs Graczny 2009/2010 Podstawy Rubiego

Programowanie w Ruby

Aplikacje bazodanowe. Laboratorium 1. Dawid Poªap Aplikacje bazodanowe - laboratorium 1 Luty, 22, / 37

Ruby on Rails. Supersilnik WWW. Łukasz Włodarczyk

Podstawowe wykorzystanie Hibernate

Czym jest Ruby on Rails?

Materiały oryginalne: ZAWWW-2st1.2-l11.tresc-1.0kolor.pdf. Materiały poprawione

Poznaj ASP.NET MVC. Kamil Cieślak Microsoft Student Partner

Specyfikacja implementacyjna aplikacji serwerowej

ASP.NET MVC. Podstawy. Zaawansowane programowanie internetowe Instrukcja nr 3

Testowanie aplikacji. Kurs języka Ruby

Zaawansowane aplikacje internetowe - laboratorium Architektura Spring.

dbsamples.udl lub przygotowany wcześniej plik dla Excela) i OK,

Przepis 1. Edycja formularza w miejscu 13. Rails sprawia, że edycja w miejscu jest prosta dzięki kontrolce script.aculo.us

EPI: Interfejs Graficzny Wykład nr 8 Warstwa widoku

Zrąb webowy dla perfekcjonistów z terminami. autor: Kamil Adamczyk

Ćwiczenia laboratoryjne nr 11 Bazy danych i SQL.

Projektowanie aplikacji w modelu MVC opartej o framework CodeIgniter

MVC w praktyce tworzymy system artykułów. cz. 1

Programowanie w Ruby

Platforma Eclipse: Pluginy, RCP oraz GEF

1. Połączenie z bazą danych. W wybranym edytorze tworzymy plik sqltest.py i umieszczamy w nim poniższy kod. #!/usr/bin/python3 import sqlite3

Baza danych sql. 1. Wprowadzenie

Ruby on Rails. Wprowadzenie. Wydanie II

I. Informacje ogólne. Jednym z takich systemów jest Mambo.

Wstęp. Opis ten dotyczy wydziałów orzeczniczych.

Bazy danych. Wykład IV SQL - wprowadzenie. Copyrights by Arkadiusz Rzucidło 1

Microsoft.NET: ASP.NET MVC + Entity Framework (Code First)

Programowanie w Ruby

Program szkolenia: Tworzenie aplikacji w Ruby on Rails z wykorzystaniem zwinnych metodyk

Bazy danych dla producenta mebli tapicerowanych. Bartosz Janiak Marcin Sikora Wrocław r.

SVN - wprowadzenie. 1 Wprowadzenie do SVN. 2 U»ywanie SVN. Adam Krechowicz. 16 lutego Podstawowe funkcje. 2.1 Windows

Wdrożenie modułu płatności eservice. dla systemu Gekosale 1.4

Bazy Danych i Usługi Sieciowe

Temat: Ułatwienia wynikające z zastosowania Frameworku CakePHP podczas budowania stron internetowych

Bazy danych i usługi sieciowe

INFORMATOR TECHNICZNY WONDERWARE. Konfiguracja komputera klienckiego do łączenia się z serwerem IndustrialSQL

Praca Dyplomowa Magisterska

Baza danych sql. 1. Wprowadzenie. 2. Repozytaria generyczne

Baza danych i ORM mgr Tomasz Xięski, Instytut Informatyki, Uniwersytet Śląski Katowice, 2011

Ćwiczenia 1 IBM DB2 UDB 9.x Express Edition

app/ - folder zawiera pliki konfiguracyjne dla całej aplikacji Można wybrać sposób zapisu konfiguracji: YML, XML, PHP

Paweł Cieśla. Dokumentacja projektu

Instrukcja programu PControl Powiadowmienia.

Założenia do ćwiczeń: SQL Server UWM Express Edition: \SQLEXPRESS. Zapoznaj się ze sposobami użycia narzędzia T SQL z wiersza poleceń.

Zaawansowany kurs języka Python

Wdrożenie modułu płatności eservice. dla systemu Magento

Procedura aktualizacji systemu TelkomBud. dla serwera DBfC w wersji 4.x

Projektowanie systemów baz danych

Tworzenie bazy danych Biblioteka tworzenie tabel i powiza, manipulowanie danymi. Zadania do wykonani przed przystpieniem do pracy:

app/ - folder zawiera pliki konfiguracyjne dla całej aplikacji src/ - folder zawiera cały kod PHP aplikacji

Wykład 5: PHP: praca z bazą danych MySQL

Wdrożenie modułu płatności eservice. dla systemu Zen Cart

Wersjonowanie baz danych podczas developmentu. Liquibase. Piotr Pelczar.

Automatyzacja procesu publikowania w bibliotece cyfrowej

Grails. v 1.1 Web Framework

Dziaª utrzymania ruchu aplikacja wspomagaj ca zarz dzanie

WYKŁAD 1 ANGULARJS CZĘŚĆ 1

Wdrożenie modułu płatności eservice. dla systemu oscommerce 2.3.x

Zagadnienia programowania obiektowego

Wordpress. Wstęp do tworzenia pluginów. Piotr Wasilewski wasilewski.piotrek (at) gmail.com

Rails. Przepisy IDZ DO KATALOG KSI EK TWÓJ KOSZYK CENNIK I INFORMACJE CZYTELNIA PRZYK ADOWY ROZDZIA. SPIS TREœCI KATALOG ONLINE

NARZĘDZIA WIZUALIZACJI

Wprowadzenie do technologii JavaServer Faces 2.1 na podstawie

Przekształcenie danych przestrzennych w interaktywne mapy dostępne na stronach www (WARSZTATY, poziom podstawowy)

Wykład nr 1 Język Ruby i framework Rails

LINQ TO SQL w dużym skrócie jest to zintegrowany język zapytao pozwalający na mapowanie relacyjnych baz danych na model obiektowy.

Instrukcja laboratoryjna

Pracownia internetowa w każdej szkole. Opiekun pracowni internetowej SBS 2003 PING

Tworzenie modułów. Wymagania aplikacji. Tworzenie modułów. Architektura aplikacji. controllers

Produktywne tworzenie aplikacji webowych z wykorzystaniem Groovy i

Tworzenie Stron Internetowych. odcinek 9

WYKORZYSTANIE WZORCA MVC W ASP.NET

SpedCust 5 instrukcja instalacji

Ruby on rails. Instalowanie Ruby on Rail framework i zapoznanie się z podstawami

PROGRAM NAUCZANIA INFORMATYKA

Laboratorium nr 4. Temat: SQL część II. Polecenia DML

Pracownia internetowa w ka dej szkole (edycja 2004/2005)

Jak przenieść bazę danych na zdalny serwer?

Baza danych - Access. 2 Budowa bazy danych

Ruby on rails. Wybór środowiska programistycznego lub Instalowanie Ruby on Rail framework i zapoznanie się z podstawami funkcjonowania i używania.

Specyfikacja implementacyjna aplikacji mobilnej

SIECI KOMPUTEROWE I BAZY DANYCH

Projekt konceptualny z Baz Danych "Centralny system zarz dzania salami na AGH"

Wprowadzenie do Doctrine ORM

Zrąb JavascriptMVC. Krzysztof Płocharz. 6 kwiecień Uniwersytet Warszawski

Lekcja 8 - ANIMACJA. 1 Polecenia. 2 Typy animacji. 3 Pierwsza animacja - Mrugaj ca twarz

System Informatyczny CELAB. Przygotowanie programu do pracy - Ewidencja Czasu Pracy

Modele danych walidacja widoki zorientowane na model

Ukªady Kombinacyjne - cz ± I

Transkrypt:

EPI: Interfejs Graczny Podstawy Ruby on Rails 6 pa¹dziernika 2010

Ruby i Ruby on Rails Ruby Japonia 1995, Yukihiro 'Matz' Matsumoto http://www.ruby-lang.org/en/ Ruby on Rails framework napisany w Ruby dla aplikacji opartych o baz danych 2004 pocz tek projektu, David Heinemeier Hansson 2010 Rails v. 3.0 (powstaªo z poª czenia z projektem Merb) http://www.rubyonrails.org

Ruby on Rails podstawowe zaªo»enia DRY nie powtarzaj si Konwencja ponad konguracj : domy±lna struktura katalogów, STI, 3 ±rodowiska pracy, jedna baza danych,... Wzorzec MVC model widok kontroler Model ActiveRecord: mapowanie obiektowo-relacyjne, migracje, zunikowana obsªuga wielu RDMS-ów, etc. Widok ActionView: Rhtml, Haml, wsparcie dla Ajaxa Kontroler ActionController: obsªuga» da«, mapowanie adresów URL, cache'owanie, etc. Generatory szablony dla modeli, rusztowa«, migracji bazy danych, itp.

Ruby on Rails zasoby Dokumentacja: http://apohllo.pl/dydaktyka/interfejsy/rails http://guides.rubyonrails.org/ Rails Guides http://apohllo.pl/guides/index.html Rails Guides (po polsku, omawia Rails 2.3.5) http://railsapi.com dziaªa szykbo i jest aktualna Edytory: Vim + Rails plugin (w pracowniach) Aptana RadRails (na bazie Eclipse) NetBeans + Ruby plugin RubyMine (pªatna)

Szybkie wprowadzenie system do obsªugi biblioteki Bardzo prosta biblioteka. Funkcjonalno±ci: 1. przegl danie listy ksi»ek 2. dodawanie ksi»ki 3. przegl danie szczegóªów ksi»ki 4. edytowanie szczegóªów ksi»ki 5. usuwanie ksi»ki

Plan dziaªania 1. wygenerowanie struktury aplikacji rails new library 2. uruchomienie serwera rails server 3. konguracja bazy danych (opcjonalne) 4. dodanie modelu 'author' rails generate scaffold author.. 5. dodanie modelu 'book' rails generate scaffold book.. 6. dodanie wyboru autora przy edycji ksi»ki 7. powi zanie modeli 'author' i 'book' belongs_to :author 8. uwzgl dnienie autora przy wy±wietlaniu ksi»ki 9. usuni cie powtórze«kodu

Tworzenie nowego projektu 1. przejd¹ do katalogu, w którym ma znale¹ si gªówny katalog projektu 2. rails new library 3. cd library 4. rails server domy±lny numer portu to 3000; je±li wiele aplikacji dziaªa w osobnych serwerach, to mo»emy zmieni go za pomoc opcji -p to polecenie wywoªuje wbudowany serwer zwany WEBRICK w Windows: ruby rails server aby uruchomi w tle: rails server -d 5. otwórz przegl dark i wprowad¹ adres http://localhost:3000

Rails okno powitalne

Rails struktura katalogów app: kod ¹ródªowy config: konguracja db: schemat bazy danych doc: dokumentacja lib: dodatkowe biblioteki log: logi public: obrazki, css, js tre±ci statyczne script: specjalne skrypty aplikacji test: automatyczne testy tmp: pliki tymczasowe vor: dodatki (pluginy)

Katalog 'app' Railsy wykorzystuj wzorzez projektowy Model-View-Controller i jest on odzwierciedlony w strukturze katalogów: models klasy zawieraj ce logik biznesow controllers kontrolery spajaj ce widoki z danymi views widoki zorganizowane w katalogach odpowiadaj cych kontrolerom helpers metody pomocnicze wykorzystywane w widokach mailers dodatkowe moduªy pomocne w wysyªaniu i odbieraniu poczty elektronicznej

Konguracja bazy danych (opcjonalne) Okre±lamy parametry poª cznia z baz danych w pliku cong/database.yml. W tym momencie wprowadzamy zmiany tylko w sekcji zatytuªowanej 'development': development: adapter: sqlite3 database: db/development.sqlite3 pool: 5 timeout: 5000 encoding: utf8 Nast pnie wywoªujemy polecenie: $ rake db:create Aby usun istniej c baz danych: $ rake db:drop

Tworzenie rusztowania dla modelu 'author' Przechodzimy do katalogu libarary i generujemy rusztowanie: $ rails generate scaffold author first_name:string last_name:string model 'author' posiada atrybuty imi i nazwisko, które s ªa«cuchami znaków zostanie wygenerowana migracja, która dodaje do bazy danych schemat odpowiadaj cy modelowi 'author' zostanie równie» wygenerowany podstawowy kontroler wraz z widokami do manipulowania autorami

Podgl d pliku migracji Otwieramy plik xxx_create_authors.rb w katalogu db/migrate. class CreateAuthors < ActiveRecord::Migration def self.up create_table :authors do t t.string :first_name t.string :last_name t.timestamps def self.down drop_table :authors

Podgl d pliku rusztowania Otwieramy plik authors_controller.rb w katalogu app/controllers. class AuthorsController < ApplicationController # GET /authors # GET /authors.xml def index @authors = Author.all respond_to do format format.html # index.html.erb format.xml { rer :xml => @authors } # GET /authors/1 # GET /authors/1.xml def show @author = Author.find(params[:id]) respond_to do format format.html # show.html.erb format.xml { rer :xml => @author } #...

Uruchamiamy migracj $ rake db:migrate == CreateAuthors: migrating =============================== -- create_table(:authors) -> 0.0041s == CreateAuthors: migrated (0.0042s) ====================== rake jest narz dziem podobnym do GNU Make, który pozwala na uruchamianie zada«, takich jak np. wywoªanie migracji bazy danych aby polecenie wykonaªo si poprawnie trzeba by w katalogu library! polecenie powoduje zmian schematu bazy danych zgodnie z wygenerowan wcze±niej migracj

Wygenerowany schemat bazy Je±li nie byªo problemów z bibliotek bazy danych sqlite3 mo»emy zobaczy wygenerowane tabele: $ sqlite3 db/development.sqlite3 SQLite version 3.6.2 Enter ".help" for instructions Enter SQL statements terminated with a ";" sqlite>.schema SHOW CREATE TABLE authors; CREATE TABLE `authors` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `first_name` varchar(255), `last_name` varchar(255)); SHOW CREATE TABLE schema_migrations; CREATE TABLE `schema_migrations` (`version` varchar(255) NOT NULL);

Rusztowanie dla modelu 'author' Uruchamiamy serwer (rails server) i otwieramy przegl dark na adresie http://localhost:3000/authors Generator rusztowania utworzyª m.in. nast puj ce pliki: app/controllers/authors_controller.rb deniuje akcje index, show, new, create, edit, update oraz destroy app/models/author.rb dynamicznie (przez mechanizm ORM) mapuje ksi»k do tabeli w bazie danych (Uwaga: nazwa modelu jest w liczbie pojedynczej, a tabeli w liczbie mnogiej.) app/views/authors/* widoki w plikach html.erb (html z osadzonym kodem Rubiego)

Tworzenie rusztowania dla modelu 'book' $ rails generate scaffold book title:string author:references Nast pnie (w katalogu gªównym!): $ rake db:migrate Ogl damy wynik pod adresem (pami taj c o serwerze): http://localhost:3000/books Próba utworzenia nowej ksi»ki zako«czy si niestety pora»k!

Zmiana sposobu tworzenia ksi»ek Dodajemy poni»szy kod na pocz tku pliku app/controllers/books_controller.rb: class BooksController < ApplicationController before_filter :find_authors, :only => [:new, :edit, :update, :create] # GET /books #... Oraz na jego ko«cu (przed sªowem kluczowym ): protected def find_authors @authors = Author.find(:all).map do author [ author.first_name + ' ' + author.last_name, author.id]

Zmiana sposobu tworzenia ksi»ek cd.(2) Modykujemy plik app/views/books/_form.html.erb <div class="field"> <%= f.label :author %> <br /> <%= f.text_field :author %> </div> przez: <div class="field"> <%= f.label :author_id %> <br /> <%= f.select :author_id, @authors %> </div> Teraz zagl damy pod http://localhost:3000/books/new

Deniowanie nowej relacji w modelu 'book' Zagl damy do app/models/book.rb: class Book < ActiveRecord::Base belongs_to :author Dzi ki zastosowaniu author:references przy generowaniu szkieletu, zdeniowana jest relacja wiele-do-jednego pomi dzy ksi»k a autorem. Informacj o tej relacji musimy jednak równie» doda do modelu author: class Author < ActiveRecord::Base has_many :books

Poprawienie sposobu wy±wietlania szczegóªów ksi»ki Zmieniamy widok ksi»ki app/views/books/show.html.erb: <p> <b>title:</b> <%= h @book.title %> </p> <p> <b>author:</b> <%= h @book.author.first_name + ' ' + @book.author.last_name %> </p> <%= link_to 'Edit', edit_book_path(@book) %> <%= link_to 'Back', books_path %> Teraz ogl damy szczegóªy ksi»ki!

Usuwanie powtórze«kodu (DRY!) Aby wy±wietli imi i nazwisko autora, w plikach books_controller.rb oraz show.html.erb u»yli±my podobnego kodu. Byªo to po prostu poª czenie imienia i nazwiska w jeden ªa«cuch. Aby usun to powtórzenie zdeniujemy now metod w modelu 'author', która b dzie dziaªa jak wirtualny atrybut. Dodajmy zatem metod full_name w pliku app/models/author.rb: class Author < ActiveRecord::Base has_many :books def full_name "#{self.first_name} #{self.last_name}"

Usuwanie powtórze«nast pnie w show.html.erb zast pujemy: <%= h @book.author.first_name + ' ' + @book.author.last_name %> przez: <%= h @book.author.full_name %> A w books_controller.rb zast pujemy: @authors = Author.find(:all).map do author [ author.first_name + ' ' + author.last_name, author.id] przez: @authors = Author.find(:all).map do author [ author.full_name, author.id] Teraz sprawdzamy czy wszystko dziaªa jak nale»y!

Zadanie Zmodykuj listing ksi»ek tak aby zawieraª imi i nazwisko autora!

Podzi kowania Dla: Agnieszki Figiel, za udost pnienie prezentacji w postaci plików ¹ródªowych Marka Kowalcze oraz Jakuba Ku¹my z grupy SRUG (srug.pl), za pomoc przy kolorowaniu skªadniu w Latex'u