Programowanie w Ruby



Podobne dokumenty
Programowanie w Ruby

Laboratorium nr 3 Podstawy Ruby on Rails

Programowanie w Ruby

Programowanie w Ruby

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

Testowanie aplikacji. Kurs języka Ruby

Programowanie w Ruby

Programowanie obiektowe

Wykład 4. SQL praca z tabelami 1

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

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

D D L S Q L. Co to jest DDL SQL i jakie s jego ą podstawowe polecenia?

Kurs języka Ruby. Ruby on Rails ActionPack

EPI: Interfejs Graczny Podstawy Ruby on Rails

Paweł Cieśla. Dokumentacja projektu

Projektowanie systemów baz danych

Język SQL, zajęcia nr 1

Autor: Joanna Karwowska

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

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

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

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

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

Baza danych. Modele danych

Podstawowe pojęcia dotyczące relacyjnych baz danych. mgr inż. Krzysztof Szałajko

PHP: bazy danych, SQL, AJAX i JSON

Zaawansowany kurs języka Python

Bazy danych. Bazy danych. Podstawy języka SQL. Dr inż. Paweł Kasprowski.

Wykład I. Wprowadzenie do baz danych

Blaski i cienie wyzwalaczy w relacyjnych bazach danych. Mgr inż. Andrzej Ptasznik

Microsoft Access materiały pomocnicze do ćwiczeń cz. 1

Projektowanie aplikacji w modelu MVC opartej o framework CodeIgniter

Instytut Mechaniki i Inżynierii Obliczeniowej Wydział Mechaniczny technologiczny Politechnika Śląska

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

PRZESTRZENNE BAZY DANYCH WYKŁAD 2

Plan. Raport. Tworzenie raportu z kreatora (1/3)

Programowanie obiektowe

Oracle11g: Wprowadzenie do SQL

Ref. 7 - Język SQL - polecenia DDL i DML

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

Backend Administratora

Programowanie w Ruby

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

Automatyka i Robotyka ROK III TEMAT: TWORZENIE I ZARZĄDZANIE INTERNETOWĄ BAZĄ DANYCH

Database Connectivity

Instytut Mechaniki i Inżynierii Obliczeniowej Wydział Mechaniczny technologiczny Politechnika Śląska

Tworzenie tabel. Bazy danych - laboratorium, Hanna Kleban 1

Instytut Mechaniki i Inżynierii Obliczeniowej fb.com/groups/bazydanychmt/

Obiektowy PHP. Czym jest obiekt? Definicja klasy. Składowe klasy pola i metody

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

WPROWADZENIE DO BAZ DANYCH

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

Języki programowania wysokiego poziomu. PHP cz.4. Bazy danych

Podstawowe pakiety komputerowe wykorzystywane w zarządzaniu przedsiębiorstwem. dr Jakub Boratyński. pok. A38

Tworzenie aplikacji bazodanowych

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

Bazy danych - wykład wstępny

INTERNETOWE BAZY DANYCH materiały pomocnicze - wykład X

Cele. Definiowanie wyzwalaczy

Zaawansowane Techniki Bazodanowe

Wprowadzenie do JDBC z wykorzystaniem bazy H2

Bazy Danych i Usługi Sieciowe

Baza danych sql. 1. Wprowadzenie

Programowanie obiektowe

Head First Ruby on Rails. Edycja polska

PLAN WYKŁADU BAZY DANYCH PODSTAWOWE KWESTIE BEZPIECZEŃSTWA OGRANICZENIA DOSTĘPU DO DANYCH

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

Programowanie obiektowe

Programowanie MSQL. show databases; - pokazanie jakie bazy danych są dostępne na koncie

Wprowadzenie do BD Operacje na bazie i tabelach Co poza zapytaniami? Algebra relacji. Bazy Danych i Systemy informacyjne Wykład 2.

Wprowadzenie do projektowania i wykorzystania baz danych Relacje

Internetowe bazy danych

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

Ćwiczenia laboratoryjne nr 11 Bazy danych i SQL.

Pojęcie systemu baz danych

3 Przygotowali: mgr inż. Barbara Łukawska, mgr inż. Maciej Lasota

Bazy Danych i Usługi Sieciowe

DECLARE VARIABLE zmienna1 typ danych; BEGIN

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL IV TI 6 godziny tygodniowo (6x15 tygodni =90 godzin ),

Wykład 5. SQL praca z tabelami 2

NARZĘDZIA WIZUALIZACJI

LK1: Wprowadzenie do MS Access Zakładanie bazy danych i tworzenie interfejsu użytkownika

Projektowanie bazy danych. Jarosław Kuchta Projektowanie Aplikacji Internetowych

Programowanie obiektowe

Technologia informacyjna

Inżynieria Programowania Laboratorium 3 Projektowanie i implementacja bazy danych. Paweł Paduch paduch@tu.kielce.pl

Program wykładu. zastosowanie w aplikacjach i PL/SQL;

Wykład 2. SQL 1 Structured Query Lenguage

BAZY DANYCH wprowadzenie. Opracował: dr inż. Piotr Suchomski

CREATE DATABASE ksiegarnia_internetowa DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;

Bazy danych i usługi sieciowe

Bazy danych. Dr inż. Paweł Kasprowski

Podstawowe wykorzystanie Hibernate

Literatura: SQL Ćwiczenia praktyczne Autor: Marcin Lis Wydawnictwo: Helion. Autor: Joanna Karwowska

Informatyka I BAZY DANYCH. dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2017

Program szkoleniowy Efektywni50+ Moduł IV Podstawy relacyjnych baz danych i język SQL

Język SQL. Rozdział 9. Język definiowania danych DDL, część 2.

Systemy baz danych. mgr inż. Sylwia Glińska

Podstawowe informacje o bazach danych. Technologie Informacyjne

Transkrypt:

Programowanie w Ruby Wykład 11 Marcin Młotkowski 19 grudnia 2014

Plan wykładu 1 Projekt 2 Modele danych 3 4 5 Marcin Młotkowski Programowanie w Ruby 2 / 38

Zasady Projekt Składowe projektu przynajmniej trzy modele; przynajmniej jedna relacja jeden do wielu; udokumentowana zgodnie z jakimś systemem gene rowania dokumentacji; testy; uwierzytelnienie użytkowników; przygotowana do dystrybucji w formie GEM ów Marcin Młotkowski Programowanie w Ruby 3 / 38

Termin Projekt 4 lutego 2015 Marcin Młotkowski Programowanie w Ruby 4 / 38

Plan wykładu Projekt Modele danych 1 Projekt 2 Modele danych 3 4 5 Marcin Młotkowski Programowanie w Ruby 5 / 38

Modele danych Projekt Modele danych Definicje danych Odczyt i zapis danych Kontrola poprawności danych danych Marcin Młotkowski Programowanie w Ruby 6 / 38

ORM object-relational mapping Modele danych Dane są reprezentowane i przetwarzane jako obiekty Dane są przechowywane w relacyjnych bazach danych Marcin Młotkowski Programowanie w Ruby 7 / 38

Moduł ActiveRecord Projekt Modele danych Definiuje model danych (tj. jego strukturę, związki między danymi, warunki poprawności) Zapewnia obiektowe tworzenie i dostęp do danych (bez udziału SQL a) Dba o zgodność modelu ze strukturą w bazie danych w przypadku migracji Marcin Młotkowski Programowanie w Ruby 8 / 38

Konwencje Projekt Modele danych Model Product Klasa Product w pliku app/models/product.rb W bazie danych jest tabela Products Plik(i) migracyjny(e) * create products.rb Marcin Młotkowski Programowanie w Ruby 9 / 38

Plan wykładu Projekt 1 Projekt 2 Modele danych 3 4 5 Marcin Młotkowski Programowanie w Ruby 10 / 38

danych Projekt Zmiana struktury danych Na początku struktura jest pusta, więc trzeba wykonać migrację (zerową) Można cofać zmiany w strukturze bazy danych Marcin Młotkowski Programowanie w Ruby 11 / 38

Szybka migracja Projekt W wierszu poleceń ruby script/generate model product bin/rails generate migration UtworzTabele Marcin Młotkowski Programowanie w Ruby 12 / 38

Plik migracyjny * create product.rb class CreateProducts < ActiveRecord::Migration def self.up end def self.down end end Marcin Młotkowski Programowanie w Ruby 13 / 38

Metoda self.up Projekt create_table :products do t t.column :przedmiot, :string, :null => false t.column :opis :text t.column :cena, :decimal, :precision => 10, :scale => 2, :default => 0.01 t.timestamps end Marcin Młotkowski Programowanie w Ruby 14 / 38

Metoda self.up Projekt create_table :products do t t.column :przedmiot, :string, :null => false t.column :opis :text t.column :cena, :decimal, :precision => 10, :scale => 2, :default => 0.01 t.timestamps end W nowszych wersjach metoda używa się nazwy change Marcin Młotkowski Programowanie w Ruby 14 / 38

Klucz główny Projekt Rails często potrzebuje klucza głównego Domyślnie zawsze dodawane jest pole id będące kluczem Marcin Młotkowski Programowanie w Ruby 15 / 38

Metoda self.down Projekt def self.down drop table :products end Marcin Młotkowski Programowanie w Ruby 16 / 38

Kolejne migracje Projekt $ ruby script/generate migration add column Marcin Młotkowski Programowanie w Ruby 17 / 38

Szkielet kolejnej migracji class AddColumn < ActiveRecord::Migration def self.up end def self.down end end Marcin Młotkowski Programowanie w Ruby 18 / 38

Implementacja migracji def self.up add columm :products, :qty, :integer end def self.down remove column :products, :qty end Marcin Młotkowski Programowanie w Ruby 19 / 38

Uruchomienie migracji $ rake db:migrate Marcin Młotkowski Programowanie w Ruby 20 / 38

Uruchomienie migracji $ rake db:migrate $ rake db:migrate VERSION=5 Marcin Młotkowski Programowanie w Ruby 20 / 38

Uruchomienie migracji $ rake db:migrate $ rake db:migrate VERSION=5 $ bin/rake db:migrate RAILS ENV=test Marcin Młotkowski Programowanie w Ruby 20 / 38

Obsługiwane silniki BD MySQL Sqlite DB2 Oracle Marcin Młotkowski Programowanie w Ruby 21 / 38

Konfiguracja Projekt config/database.yml development: adapter: sqlite3 database: db/development.sqlite3 pool: 5 timeout: 5000 test:... production:... Marcin Młotkowski Programowanie w Ruby 22 / 38

Początkowa konfiguracja $ rails demo --database=sqlite3 Marcin Młotkowski Programowanie w Ruby 23 / 38

Obsługa danych poprzez przeglądarkę zbudowanie kontrolera ruby script/generate controller admin bin/rails generate controller admin (nowsze wersje) Marcin Młotkowski Programowanie w Ruby 24 / 38

Obsługa danych poprzez przeglądarkę zbudowanie kontrolera ruby script/generate controller admin bin/rails generate controller admin (nowsze wersje) W pliku app/controllers/admin controller.rb trzeba dopisać linijkę class AdminController < ApplicationController scaffold :product end Marcin Młotkowski Programowanie w Ruby 24 / 38

Marcin Młotkowski Programowanie w Ruby 25 / 38

Plan wykładu 1 Projekt 2 Modele danych 3 4 5 Marcin Młotkowski Programowanie w Ruby 26 / 38

Rusztowanie (scaffold) Co to jest rusztowanie wygenerowany automatycznie szkielet służący do operowania na modelu. Marcin Młotkowski Programowanie w Ruby 27 / 38

Rails wersja 2.* Można automatycznie wygenerować tabelę, model, a także kontroler z interfejsem do obsługi modelu. Marcin Młotkowski Programowanie w Ruby 28 / 38

Rails wersja 2.* Można automatycznie wygenerować tabelę, model, a także kontroler z interfejsem do obsługi modelu. Przykład $ ruby script/generate scaffold Wyklady title:string opis:text punkty:integer Marcin Młotkowski Programowanie w Ruby 28 / 38

Wynik działania skryptu Przykład $ ruby script/generate scaffold Wyklady title:string opis:text punkty:integer Marcin Młotkowski Programowanie w Ruby 29 / 38

Wynik działania skryptu Przykład $ ruby script/generate scaffold Wyklady title:string opis:text punkty:integer Migracja Powstaje plik migracji, konieczne jest $ rake db:migrate Marcin Młotkowski Programowanie w Ruby 29 / 38

Wynik działania skryptu Przykład $ ruby script/generate scaffold Wyklady title:string opis:text punkty:integer Migracja Powstaje plik migracji, konieczne jest $ rake db:migrate Kontroler z obsługą dodawania, usuwania i edycji danych modelu (CRUD) i odpowiednimi widokami Marcin Młotkowski Programowanie w Ruby 29 / 38

Wynik działania skryptu Przykład $ ruby script/generate scaffold Wyklady title:string opis:text punkty:integer Migracja Powstaje plik migracji, konieczne jest $ rake db:migrate Kontroler z obsługą dodawania, usuwania i edycji danych modelu (CRUD) i odpowiednimi widokami I jeszcze parę innych rzeczy Marcin Młotkowski Programowanie w Ruby 29 / 38

Plan wykładu 1 Projekt 2 Modele danych 3 4 5 Marcin Młotkowski Programowanie w Ruby 30 / 38

Model przypomnienie Modele to podklasy klasy ActiveRecord::Base Każda taka klasa odpowiada tabeli w relacyjnej bazie danych Obiekty tych klas odpowiadają wierszom tych tabel Metody w tych klasach ukrywają szczegóły związane z SQL i bazą danych Marcin Młotkowski Programowanie w Ruby 31 / 38

Podstawowe operacje na danych Wyszukiwanie, modyfikacja i tworzenie nowych obiektów Kontrola poprawności danych - walidacja Marcin Młotkowski Programowanie w Ruby 32 / 38

Walidacja warunki wbudowane Funkcje standardowe validates presence of :nazwa, :cena validates numericality of :cena, :message => Cena nie jest liczbą, :if => test() validates uniqueness of :nazwa Marcin Młotkowski Programowanie w Ruby 33 / 38

Zastosowanie app/models/wyklady.rb: class Wyklady < ActiveRecord::Base validates_uniqueness_of :title end Marcin Młotkowski Programowanie w Ruby 34 / 38

Walidacja własna Metoda w klasie modelu: class Wyklady < ActiveRecord::Base protected def validate errors.add(:cena, cena powinna być dodatnia ) if cena.nil? cena < 0.01 end end Marcin Młotkowski Programowanie w Ruby 35 / 38

Plan wykładu 1 Projekt 2 Modele danych 3 4 5 Marcin Młotkowski Programowanie w Ruby 36 / 38