Infopoint - Ruby on Rails - Jörg Wüthrich08.08.2007Seite 1 Ruby on Rails Geschichte Ruby Rails Live – Demo.

Slides:



Advertisements
Ähnliche Präsentationen
Dynamische WEB-Applikationen
Advertisements

Persistente Domänenmodelle mit JPA 2.0 und Bean Validation
Transaction Synchronization for XML Data in Client Server Web Applications Stefan Böttcher & Adelhard Türling Universität Paderborn.
Anwendungen des OODM auf die ADB / NDB
PKJ 2005/1 Stefan Dissmann Vorwoche - Klasse public class Studierende { private String name, vorname, studiengang; private int matNr, semester; private.
Nano-World The interdisciplinary Virtual Laboratory on Nanoscience Ein Projekt des Virtuellen Campus T. Gyalog, M. Guggisberg, R. Schneider, Ch. Freiburghaus,
eXist Open Source Native XML Database
Design by Contract with JML - Teil 2
Ruby on Rails im Überblick
Objektrelationales Mapping mit JPA Advanced Mapping Jonas Bandi Simon Martinelli.
Objektrelationales Mapping mit JPA Entity Mapping Jonas Bandi Simon Martinelli.
Stefanie Selzer - Pascal Busch - Michael Kropiwoda
Java: Objektorientierte Programmierung
Java: Dynamische Datentypen
Java: Grundlagen der Objektorientierung
Installation des Add-In SOLVERSTAT
M a r c – o l i v e r p a h l Die ObjektOrientierte Mühle Das Beispiel soll noch einmal das Konzept der Objektorientiertheit erläutern. Dabei werden außerdem.
XForms Von Matthias Keck.
Oracle WebServer - Einführung. © Prof. T. Kudraß, HTWK Leipzig Oracle Web Application Server HTML WebServer ® File system Static HTML PL/SQL Packages.
Modulare Programmierung
DVG Verkettete Listen Verkettete Listen. DVG Verkettete Listen 2 Primitive Datentypen Vorteile: –werden direkt vom Prozessor unterstützt.
Hänchen & Partner GmbH 1 Web-Anwendungen mit dem Jakarta Struts Framework 3.Juli 2003 Martin Burkhardt.
USE2ANT Die Umstellung von Use Makefiles zu Ant & Junit Von Isaac, Maleen und Marc.
Frank Fischer Manager Evangelism and Marketing Microsoft Deutschland GmbH.
Wir bauen uns eine Webapplikation!
Laurie Clarcq The purpose of language, used in communication, is to create a picture in the mind and/or the heart of another.
Medien zwischen Technologie und Gesellschaft Dozent: Herr Prof. Dr. Manfred Thaller SS 13 Referent: Christian Braun.
Google App Engine Microsoft Windows Azure
OO implementieren Teil IV Objekte erzeugen. © René ProbstModul 226IV - 2 Von der Klasse zum Objekt Plan Bau Objekt Klasse Instanzierung Objekt Das Objekt.
Chair of Software Engineering Einführung in die Programmierung Prof. Dr. Bertrand Meyer Lektion 14: Mehrfachvererbung.
Test Driven Development - Romano Adler-
Automated Software Testing
Einführung / Geschichte Einführung / Geschichte Motivation Motivation Beispiel Beispiel Architektur / Komponenten Architektur / Komponenten Konfiguration.
BAS5SE | Fachhochschule Hagenberg | Daniel Khan | S SPR5 MVC Plugin Development SPR6P.
© All rights reserved. Zend Technologies, Inc. Jan Burkl System Engineer, Zend Technologies Zend Server im Cluster.
EPROG Tutorium Einheit 4 Klassen und Objekte. Wiederholung Schleifen do... while while for break/continue Strings String char Methoden für Strings Arrays.
Informatik – Programmierpraktikum Alexander Volodarski Gruppe 14
Entity Mapping Persistente Domänenmodelle mit JPA 2.0 und Bean Validation.
Advanced Mapping Persistente Domänenmodelle mit JPA 2.0 und Bean Validation.
Your name Bedeutung von Internet- Technologien Gruppe 1 Andreas Feuerstein Philipp Hochratner Christian Weinzinger.
Developer Day Webseiten auf Windows Azure hosten Britta Labud bbv Software Services AG Roland Krummenacher bbv Software Services AG.
Neno Loje Berater & MVP für Visual Studio ALM und TFS (ehemals VSTS) Hochqualitative Produkte mit Visual Studio & TFS 2010.
| Basel Developing apps for SharePoint 2013 using Visual Studio 2013 René Modery, Office 365 MVP, 1stQuad Solutions.
Cooperation unlimited © Zühlke August 2008 Hansjörg Scherer Folie 1 Cooperation unlimited TFS als BackEnd für Visual Studio und Eclipse.
3/28/2017 8:11 PM Visual Studio Tools für Office { Rapid Application Development für Office } Jens Häupel Platform Strategy Manager Microsoft Deutschland.
MVVM in Windows 8 und Windows Phone 8
PresenterCompanyContact Windows Azure ASP.NET Web-Anwendungen schnell und zuverlässig bereitstellen.
Parallel Programming Thread Synchronization. Heute 1. Lösung zu Assignment 2 2. Erstellen und Starten von Threads in Java 3. Das synchronized Schlüsselwort.
XML IV: Cocoon 2.
Linker & Loader in .NET August Steinbacher.
Virtual Earth Visualisierung von Geodaten Daniel Walzenbach, Microsoft Deutschland GmbH
Template v5 October 12, Copyright © Infor. All Rights Reserved.
Univ.-Lektor Dipl.-Ing. Dr. Markus Schranz staatlich befugter und beeideter Ingenieurkonsulent für Informatik Web Application Engineering & Content Management.
SharePoint FIS HandsOn – out of the Box.
Einführung in das Wissenschaftliche Arbeiten Andreas Hechenblaickner Programmiersprache Eiffel
Office Business Anwendungen mit SharePoint 2010 Fabian Moritz SharePoint MVP.
Office Business Anwendungen mit SharePoint Fabian Moritz | MVP Office SharePoint Server.
© All rights reserved. Zend Technologies, Inc. Jenseits von var_dump(): Debugging in ZF Jan Burkl System Engineer.
Design Patterns Ein Muster (pattern) ist eine Idee, die sich in einem praktischen Kontext als nützlich erwiesen hat und dies auch in anderen sein wird.
3. Juni 2003Moritz Petersen Minimales Markup und Templates zur Erstellung von strukturierten Texten Ein Zwischenbericht zur Diplomarbeit.
Common Language Runtime Seminar Softwareentwicklung Wintersemester 2003 Gertraud Orthofer
Torque in Turbine Team 3 Alexander Mittermair Michael Wesinger.
Neuerungen in Java 5/6/7. Stefan Bühler für InfoPoint Überblick Java 5 neue Sprachfeatures Erweiterungen Klassenbibliothek Java 6 Erweiterungen.
Learning By Doing Konstruktoren Gleicher Name wie die Klasse Zur Initialisierung des Objekts, insbesondere mit Parametern Wir immer bei der Objekterzeugung.
Agile ALM for Plex/2E CM MatchPoint ALM. Themen Agenda CM MatchPoint ALM Übersicht CM MatchPoint 5.2 Web und Mobile Entwicklung Agile ALM / DevOps CM.
Gtn gmbh Jedesmal, wenn du alle Antworten gelernt hast, wechseln sie alle Fragen. Oliver Otis Howard ( )
Launch ON Global.vi System ID object name classname Services to suscribe Observer Control Ref vi-path Service name Step 1 : Objects register to the Global.vi´s,
Technische Universität München 1 CADUI' June FUNDP Namur G B I The FUSE-System: an Integrated User Interface Design Environment Frank Lonczewski.
Die Programmiersprache Ruby Seminarvortrag von Lia Schulze Dephoff 1.
Infopoint - Ruby on Rails - Jörg Wüthrich
 Präsentation transkript:

Infopoint - Ruby on Rails - Jörg Wüthrich Seite 1 Ruby on Rails Geschichte Ruby Rails Live – Demo

Infopoint - Ruby on Rails - Jörg Wüthrich Seite 2 Geschichte Ruby "Vater": Yukihiro matz Matsumoto 1993: Beginn der Arbeiten an Rubys 1995: 1. public Release von Ruby 1996: erlangt "Akzeptanz der Massen" (aktive Usergruppen, gefüllte Konferenzen) aktuell: Rails Gründer: David Heinemeier Hansson 2003: Beginn der Entwicklung (aus Basecamp abgeleitet) 2004: 1. Release aktuell: 1.2.3

Infopoint - Ruby on Rails - Jörg Wüthrich Seite 3 TIOBE Index

Infopoint - Ruby on Rails - Jörg Wüthrich Seite 4 Ruby "A dynamic, open source programming language with a focus on simplicity and productivity. It has an elegant syntax that is natural to read and easy to write." (

Infopoint - Ruby on Rails - Jörg Wüthrich Seite 5 Ruby objektorientiert (alles ist ein Objekt) interpretiert ( 20KB executable in C geschrieben ) Open Source – "Ruby License" oder GPL "Object" als Wurzel Single Inheritance (+ "mixin"s) Garbage Collection vollständig Kommandozeilen-orientiert wird mit Standard-Library geliefert

Infopoint - Ruby on Rails - Jörg Wüthrich Seite 6 Ruby - Code-Beispiel class Song attr_accessor :name # accessor methods = 0 # static field def initialize(name)# = name # instance field end def play # instance method += 1 # "return" omitted end song = Song.new('my Song') puts song.name # => my Song puts song.play # => 1

Infopoint - Ruby on Rails - Jörg Wüthrich Seite 7 Ruby – etwas genauer (1) streng und dynamisch typisiert es gibt "public", "protected", "private" protected: Aufruf aus der definierten Klasse und deren Subklassen private: nur innerhalb eines Objekts (mit implizitem "this" als Empfänger) Operatoren können überladen werden Definitionen (Klassen, Methoden...) werden mit "end" abgeschlossen (kein { }) "()" bei Methoden-Aufrufen fehlen in der Regel Variablen-Scope über Naming-Convention

Infopoint - Ruby on Rails - Jörg Wüthrich Seite 8 Ruby – etwas genauer (2) alle Klassen sind "offen" jede Klasse (auch Object) kann jederzeit erweitert werden Closures Code-Blöcke mit Zugriff auf alle umliegenden Variablen (ähnlich wie anonyme Klassen in Java) Iteration mit Blöcken Mixin – einbinden von Modulen ähnliche wie Interface in Java Variable Konstanten gibt zur Laufzeit eine Warnung... %w[dies sind Elemente einer Liste].each { |element| puts element } include Enumerable

Infopoint - Ruby on Rails - Jörg Wüthrich Seite 9 Rails "Web development that doesn't hurt" Model View Controller ActiveRecord ActionView ActionController Convention over Configuration Don't repeat yourself Unterstützung für DB-Migrationen / Unittesting...

Infopoint - Ruby on Rails - Jörg Wüthrich Seite 10 Rails – MVC HTTP Request HTTP Response

Infopoint - Ruby on Rails - Jörg Wüthrich Seite 11 Rails – don't repeat yourself ActiveRecord Methoden aus DB-Metadaten generiert ActionView Layout pro Model Template pro Methode Referenzen zwischen Templates Scaffolding generiert Gerüst einer Applikation macht viele "Fingerübungen" überflüssig neuer Controller neues Model-Element neue View neuer Testfall

Infopoint - Ruby on Rails - Jörg Wüthrich Seite 12 Live - Demo

Infopoint - Ruby on Rails - Jörg Wüthrich Seite 13 Rails - ActionController Zentrale Drehscheibe für Webrequests bestehen aus Actions, die als Request oder als Redirect aufgerufen werden können AddressController.list AddressController.create... rendern ein Template aus app/views def = Address.new(params[:address]) flash[:notice] = 'Address was successfully created.' redirect_to :action => 'list' else render :action => 'new' end

Infopoint - Ruby on Rails - Jörg Wüthrich Seite 14 Rails - ActionView Template-Renderer für Output 3 Varianten im Standard enthalten.rhtml – Mischung aus ERb ("eRuby") und Html.rxml – programmatische Alternative zu.rhtml.rjs – verwendet den JavaScriptGenerator enthält diverse "Helpers" (vergleichbar mit Tag Libraries) : 'edit', :id %> | 'list' %>

Infopoint - Ruby on Rails - Jörg Wüthrich Seite 15 Rails – ActiveRecord (1) Repräsentieren eine DB-Tabelle führen selbst keine Attribute, sondern leiten diese aus der Tabellen-Definition ab Änderungen werden nicht am ActivRecord- Objekt gemacht, sondern immer direkt auf der Tabelle Standard-Verhalten kann übersteuert werden Unterstützt optimistisches / pessimistisches Locking def = Address.find(params[:id], :lock => true) end

Infopoint - Ruby on Rails - Jörg Wüthrich Seite 16 Rails – ActiveRecord (2) DB-Migrationen Verwaltung des Lifecycles von Tabellen Neue Tabelle Spalten hinzufügen / entfernen Index setzen... Ruby Notation in Standard-Fällen SQL-Notation, falls benötigt class InitAdresslist < ActiveRecord::Migration def self.up create_table :addresses do |table| table.column :lastname, :string, :limit => 40 table.column :firstname, :string, :limit => 40 table.column : , :string, :limit => 100 end... end

Infopoint - Ruby on Rails - Jörg Wüthrich Seite 17 Rails – ActiveRecord (3) Assoziationen ActiveRecord Zugriff class Dvd < ActiveRecord::Base belongs_to :category end class Category < ActiveRecord::Base has_many :dvd end dvdsWithCategories = Dvd.find(:all, :include => :category) puts dvdsWithCategories.title # => "Bourne Identity" puts dvdsWithCategories.category.name # => "Action"

Infopoint - Ruby on Rails - Jörg Wüthrich Seite 18 Rails – ActiveRecord (4) Validation class Address < ActiveRecord::Base protected def validate errors.add_on_empty %w(first_name last_name) errors.add(" ", "has invalid format (use unless =~ end

Infopoint - Ruby on Rails - Jörg Wüthrich Seite 19 Warum Ruby on Rails? Wenig Konfiguration notwendig Kaum Wiederholungen, relativ sauberer Code voll objektorientiert DB-Anbindung simpel Web 2.0 "ready" Integriertes Unittesting Integriertes Staging Open Source mit aktiver Community relativ jung; Erfahrungen mit wirklich grossen Projekten fehlen langsamer als PHP oder ASP

Infopoint - Ruby on Rails - Jörg Wüthrich Seite 20 Referenzen - die Ruby Webseite – die Ruby on Rails Webseite Beantwortet viele Fragen rund um Ruby on Rails RDE (Ruby Development Environment) Eclipse basierte Ruby on Rails Entwicklungs-Umgebung das ActiveRecord Pattern guter Überblick über die Möglichkeiten von Ruby on Rails

Infopoint - Ruby on Rails - Jörg Wüthrich Seite 21 backup

Infopoint - Ruby on Rails - Jörg Wüthrich Seite 22 Ruby Tools ruby.exe – Interpreter rake.bat – ruby make rdoc.bat – Ruby Doc analog zu javadoc -> output als html, chm, ri, xml) ri.bat – Ruby Information ähnlich "man" auf Unix irb.bat – interactive ruby gem.bat – package manager

Infopoint - Ruby on Rails - Jörg Wüthrich Seite 23 Rails - Testing Unit Tests Test für einzelnes Modul (ActiveRecord) Functional Tests Test der Actions eines Controllers separat Integration Tests Test des Zusammenspiels von mehreren Controllern und Actions