Wolter Kaper - Ruby on Rails Webtoepassing ontwerpen Webprogrammeren, week 1
Wolter Kaper - Vandaag: Opzet van dit vak Intro Ruby on Rails: MVC en REST Onderwerp kiezen Rails code generator uitproberen >> Prototype
Wolter Kaper - Http server scripts, waarom? Website management Vb: UvAweb Tweerichtingverkeer Vb: Blackboard
Wolter Kaper - Webserver (Apache, Webrick) CGI / FastCGI Server side scripting Programmeertaal: Ruby / PHP / Java Frameworks: Rails /CakePHP / JSF Jouw code Database server gebruiker browser HTTP
Wolter Kaper - Invoer komt van een formulier
Wolter Kaper - Talen en frameworks voor SSS Microsoft ASP.NET / … PHP / CakePHP Java / JSP, JSF, Hibernate XML “tags” die java-klassen activeren Ruby / Ruby on Rails Trends Eerst: programmeerwerk ingebed in webpagina. Later: logica en vormgeving scheiden. Nu: Model-View-Controller, ActiveRecord (ORM), REST
Wolter Kaper - Ruby-on-Rails ideologie 1: REST “Representational State Transfer” Ph.D thesis van Roy Fieldingthesis van Roy Fielding Objecten hebben URL´s HTTP werkwoorden: acties GET, POST, PUT, DELETE Eén object, “resource”, meer representaties: HTML, XML, … Vb.: GET /photos/17.xml
Wolter Kaper - Ruby-on-Rails ideologie 2: MVC Model – View – Controller patroon Smalltalk, eerste OO taal Trygve Reenskaug, 1979 Trygve Reenskaug Model: de gegevens, een “business object” View: een presentatie van het object Controller: Koppelt model aan view Voert acties uit op het object
Wolter Kaper - Lagen in een applicatie User Interface Laag Domein Model, Modellen Laag Database Laag Gebruiker
Wolter Kaper - Lagen volgens MVC + ORM Gebruiker + browser ViewController Model object URL actie Database tabel
Wolter Kaper - Taakverdeling MVC Gebruiker + browser ViewController Model object URL actie Model: alle domein-logica Controller schakelt model + view in View: toont model-objecten
Wolter Kaper - Object-Relational Mapping (ORM) Model object Database tabel Rails ORM: elke domein-objectklasse zijn eigen tabel in de database
Wolter Kaper - Ruby-on-Rails praktijk
Wolter Kaper - Ruby-on-Rails indeling app Je programmeerwerk db Database wijzigingen public Statische HTML script Code generators Webservertje
Wolter Kaper - De “app” map
Wolter Kaper - Database connectie configureren config/database.yml SQLite MySQL
Wolter Kaper - “Scaffolding” een business object in de steigers zetten
Wolter Kaper - “Scaffold” resultaten
Wolter Kaper - “Scaffold” resultaten: model
Wolter Kaper - “Scaffold” resultaten: controller
Wolter Kaper - “Scaffold” resultaten: controller
Wolter Kaper - “Scaffold” resultaten: views
Wolter Kaper - “Scaffold” resultaten: het show view – show.html.erb
Wolter Kaper - “Scaffold” resultaten: database migratie - …create_berichts.rb
Wolter Kaper - Wat is een database-migratie? Je vindt ze in de db-map Het zijn ruby klassen Ze beschrijven een database wijziging Twee richtingen: up en down De filenaam bevat datum en tijd Uitvoeren: Rake db:migrate version=… Rake db:migrate up Rake db:migrate
Wolter Kaper - Een db-migratie uitvoeren
Wolter Kaper - Resultaat db-migratie Gebruik een geschikte client om in je database te kijken.
Wolter Kaper - Nu het resultaat bekijken Start een browser en ga naar: (URL´s zijn configureerbaar: config/routes.rb)
Wolter Kaper - Uitproberen htmlhttp://guides.rubyonrails.org/getting_started. html punt 3 t/m 6: de Blog applicatie! rails yourapp ruby script/generate controller … ruby script/generate scaffold … rake db:migrate ruby server/script pas commando’s aan voor jouw applicatie bekijk het resultaat in browser
Wolter Kaper - Volgende keer (woensdag) Per Jullie onderwerpkeuze! Wie is contactpersoon? Wij vertellen over: Schermen ontwerpen Objectmodel ontwerpen Database ontwerpen