Einführung in Ruby on Rails



Ähnliche Dokumente
Rails Ruby on Rails Ajax on Rails. Clemens H. Cap

Django - ein Python Web-Framework

Contentmanagement Übung

Eine Anwendung mit InstantRails 1.7

Grundlagen der Web-Entwicklung

Lokale Installation von DotNetNuke 4 ohne IIS

OP-LOG

Wo finde ich die Software? - Jedem ProLiant Server liegt eine Management CD bei. - Über die Internetseite

InfoPoint vom 9. November 2011

Wie richten Sie Ihr Web Paket bei Netpage24 ein

Ruby on Rails. Thomas Baustert Ralf Wirdemann Alternative zur Web-Entwicklung mit Java?

Rails Ruby on Rails Ajax on Rails. Clemens H. Cap

Grails. Weiterführende Themen zu Internet- und WWW-Technologien. Matthias Springer. 06. Juni 2011

Titel. SCSM ITIL - CMDB - neue CI Klasse erstellen und benutzen. Eine beispielhafte Installationsanleitung zur Verwendung im Testlab

:: Anleitung Hosting Server 1cloud.ch ::

WEBAPPLIKATIONEN MIT PHP. Wo gibt es Hilfe? Wie fang ich an?

Herzlich Willkommen! eine praxisnahe Übersicht. Mit Java ins Web - mb@bebox.franken.de (c) Michael Behrendt -

Session Beans & Servlet Integration. Ralf Gitzel ralf_gitzel@hotmail.de

PHP Kurs Online Kurs Analysten Programmierer Web PHP

JSP vs. PHP. Ein persönlicher Vergleich. EQUIcon Software GmbH Jena, Jörg Spilling Frankfurter Treffen Agenda

Patch Management mit

Installation der 4Dv12sql Software für Verbindungen zum T.Base Server

Zugriff auf Daten der Wago über eine Webseite

Installationsanleitung dateiagent Pro

Design Patterns 2. Model-View-Controller in der Praxis

Softwareentwicklung in der industriellen Praxis

Datenbank-Verschlüsselung mit DbDefence und Webanwendungen.

Versionsverwaltung mit SVN

FTP Tutorial. Das File Transfer Protocol dient dem Webmaster dazu eigene Dateien wie z.b. die geschriebene Webseite auf den Webserver zu laden.

Objektorientierte Programmierung für Anfänger am Beispiel PHP

Sonnenfinsternis in der Technischen Redaktion

Fakultät für Informatik & Wirtschaftsinformatik DB & IS II SS 2015 PHP MVC. Dr. Christian Senger. PHP MVC 1 von 21

Agile Vorgehensmodelle in der Softwareentwicklung: Scrum

MOC Entwicklung von ASP.NET MVC 4 Webapplikationen

Step by Step Webserver unter Windows Server von Christian Bartl

WEB 2.0 NÜTZLICH FÜR MICH?

Scala & Lift. Ferenc Lajko

HP Software Patch- und Version-Notification

INSTALLATION VON INSTANTRAILS 1.7

Änderungsbeschreibung HWS32 SEPA Überweisungen

BitDefender Client Security Kurzanleitung

PHPNuke Quick & Dirty

Klassenentwurf. Wie schreiben wir Klassen, die leicht zu verstehen, wartbar und wiederverwendbar sind? Objektorientierte Programmierung mit Java

Options- und Freitext-Modul Update-Anleitung

Updatehinweise für die Version forma 5.5.5

Das Compare-, Merge- und Versionierungstool für Microsoft Dynamics NAV. NAVObjectEditor RECY CLE

Fachdidaktik der Informatik Jörg Depner, Kathrin Gaißer

Deployment Deployment Seite 1 / 25

Groovy on Grails. Informatik-Seminar WS06/07. Alexander Treptow. Groovy on Grails Alexander Treptow (minf2622) 1

Multimedia im Netz. Wintersemester 2011/12. Übung 10. Betreuer: Verantwortlicher Professor: Sebastian Löhmann. Prof. Dr.

v2.2 Die innovative Softwarelösung für kundenspezifisches Anrufmanagement Administrator-Handbuch

CartCalc FAQ (frequently asked questions) häufige Fragen zu CartCalc

FILEZILLA HANDBUCH

Agiles Design. Dr.-Ing. Uwe Doetzkies Gesellschaft für Informatik mail:

App Entwicklung mit Hilfe von Phonegap. Web Advanced II - SS 2012 Jennifer Beckmann

Ruby on Rails. Florian Ferrano Ralf Heller Markus Nagel

Umzug der Datenbank Firebird auf MS SQL Server

Content Management System für die Webpräsenzen der Freien Universität Berlin

PHP - Projekt Personalverwaltung. Erstellt von James Schüpbach

Programmieren für mobile Endgeräte SS 2013/2014. Dozenten: Patrick Förster, Michael Hasseler

GIS mit Ruby on Rails

MailUtilities: Remote Deployment - Einführung

Installation des edu- sharing Plug- Ins für Moodle

Installationsanleitung

Datenbanken SQL Einführung Datenbank in MySQL einrichten mit PhpMyAdmin

I N S T A L L A T I O N S A N L E I T U N G

Schritt-für-Schritt-Anleitung So verschlüsseln Sie Ihr -Konto in der Software 6.0

Installation Linux agorum core Version 6.4.5

TimeSafe Zeiterfassung. Version 2.1 (September 2008)

ITF2XML. Transferservice. Version 1.1. Tel.: 044 / Fax: 044 / CH-8005 Zürich

Teamschool Installation/ Konvertierungsanleitung

1 Elexis OpenVPN-Client für Analytica

Windows 7 - Whoami. Whoami liefert Informationen wie z.b. die SID, Anmelde-ID eines Users, sowie Gruppenzuordnungen, Berechtigungen und Attribute.

Autorisierung. Sicherheit und Zugriffskontrolle & Erstellen einer Berechtigungskomponente

SharePoint Workspace 2010 Installieren & Konfigurieren

Microsoft SQL Server 2005 Management Studio Express Installation und Wiederherstellung einer Redisys SQL Datenbank. Inhaltsverzeichnis

Architekturen. Von der DB basierten zur Multi-Tier Anwendung. DB/CRM (C) J.M.Joller

Installation des edu-sharing Plug-Ins für Moodle

Technische Hinweise. Dokumentation Sage bäurer GmbH, D Donaueschingen Weitere Produkt-Infos:

Internet und WWW Übungen

SSH Authentifizierung über Public Key

SQL - Übungen Bearbeitung der Datenbank Personal (1)

Skalierbare Webanwendungen mit Python und Google App Engine

Webseiten sind keine Gemälde. Webstandards für ein besseres Web. Webstandards für ein besseres Web

Testplan. Hochschule Luzern Technik & Architektur. Software Komponenten FS13. Gruppe 03 Horw,

SILBER SURFER. PC-Treffen der Arbeiterwohlfahrt, Ortsverein Sehnde. PC Internet / Cloud. Leitfaden zur Schulung

Reporting Services und SharePoint 2010 Teil 1

FAQ The FAQ/knowledge base. Version 2.1.1

Installation des CMS-Systems Contao auf einem Windows-Rechner mit XAMPP

TimeMachine. Time CGI. Version 1.5. Stand Dokument: time.odt. Berger EDV Service Tulbeckstr München

Drei-Schichten-Architektur. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 16: 3-Schichten-Architektur 1 Fachkonzept - GUI

Einführung in PHP. (mit Aufgaben)

App Entwicklung mit dem Android SDK

Gliederung. 1. That s Radiant 2. User Interface 3. Rollen 4. Installation 5. Extensions 6. Fazit

Ruby on Rails 3.1 Expertenwissen

Er musste so eingerichtet werden, dass das D-Laufwerk auf das E-Laufwerk gespiegelt

Step by Step Softwareverteilung unter Novell. von Christian Bartl

Transkript:

Johannes Gilger & Matthias Lederhofer der RWTH Aachen Network Operation Center 21. Juli 2010

Übersicht Ruby Rails Warum man Rails benutzen möchte Konzepte (DRY, MVC, Convention over Configuration) ActiveRecord - ORM Weiterführende Literatur, Software

Der Name Ruby on Rails

Der Name Ruby on Rails

Ruby Objektorientierte, interpretierte Sprache Dynamisch getyped Sehr einfache Syntax Ruby auch für sich betrachtet sehr interessant!

Ruby: Klassen class Customer attr_accessor :vorname, :nachname def initialize @vorname = @nachname = end def name return @vorname + + @nachname end end Keine Getter/Setter-Methoden schreiben: jojo = Customer.new jojo.vorname = Johannes

Ruby: Datentypen [0, 1, 2, hallo, 23.5] - Array %w(jan, Feb, Mar, Apr) - Stringarray { jojo => 24, matled => 25 } - Hash Alle Datentypen sind Objekte und besitzen ein Vielzahl praktischer Methoden

Ruby: Beispiele 2.times {puts Hello } => Hello => Hello RWTH Aachen.downcase.split( ).uniq.sort.join => acehnrtw array = [1, hi, 3.14] array.each { item puts item} => 1 => hi => 3.14 (1..10).collect { x x*x} => [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

Der Name Ruby on Rails

Rails Open-Source Web-Application Framework auf Grundlage von Ruby Aufgeteilt in mehrere Komponenten ActiveRecord - ORM (Datenbankanbindung) ActiveResource, ActionPack, ActiveSupport, ActionMailer 2004: Veröffentlichung, seitdem viele Veränderungen 2008: Rails-Entwicklung wird von SVN auf git umgestellt 2010: Rails 2.3.8 ist stable, Rails läuft auch auf Ruby 1.9 2010: Rails 3.0 RC4 aktuell, Release bald zu erwarten Bekannte Projekte unter Rails: GitHub, Twitter, Lighthouse, XING, etc.

Warum man Rails benutzen möchte Sehr schnelle Entwicklung von Webanwendungen Insbesondere das initiale Interface Unabhängigkeit von Datenbank-Engine Dadurch auch ein Sicherheitsvorteil. Manche Anwendungen können ohne ein einziges SQL-Statement geschrieben werden Vereinfachung von typischen Operationen Häufig wiederholte Dinge wie Links, Bilder, Stylesheets,... Vereinbarung bestimmter Konventionen Machen das Zusammenarbeiten einfacher Hilfreiche Werkzeuge zum Entwickeln und Debuggen

Buzzwords Database-Migrations (Änderungen an Datenbanken mit Code festhalten) Session/Cookie-Verwaltung, sonst nervig Lokalisation / Zeitzonen-Support Caching eingebaut Unit-Testing mit einfachen Tests AJAX (Asynchronous JavaScript and XML) stark vereinfacht Layouts / Partials (Teil-Layout einer Seite) Input Validation / XSS-Schutz eingebaut Viele Plugins (Authentication, Pagination, Tagging)

Convention over Configuration Rails trifft bestimmte Annahmen: Datenbank: Tabellen sind pluralisiert (Customer => customers). Jede Tabelle hat einen Primärschlüssel id (INT) Datenbank: Fremschlüssel heissen person_id Applikation: Aufteilung in MVC nach Ordnern, Dateien Resultat: Einschränkungen helfen. Grundlegende Entwicklungstätigkeiten werden sehr einfach.

MVC - Model, View, Controller

MVC - Model, View, Controller

ORM - Object Relational Mapper SQL: CREATE TABLE customers ( vorname VARCHAR(255), nachname VARCHAR(255)); app/models/customer.rb class Customer < ActiveRecord::Base def name return self.vorname + + self.nachname end end irb (ruby script/console) jojo = Customer.new(:vorname => Johannes, :nachname => Gilger ) puts jojo.name => Johannes Gilger

DRY - Don t Repeat Yourself CREATE TABLE customers ( vorname VARCHAR(255), nachname VARCHAR(255)); class Customer < ActiveRecord::Base def name return self.vorname + + self.nachname end end Wo kommen Customer.vorname und Customer.nachname her? => Customer ist Unterklasse von ActiveRecord::Base! Klasse: Tabelle (class Customer) Instanz: Zeile einer Tabelle (jojo = Customer.new) Attribut einer Instanz: Zelle (jojo.vorname = Johanna )

DRY - Models Validation in den Models, alles was in die Datenbank soll wird über das Model geleitet class Customer < ActiveRecord::Base validates_uniqueness_of :login, :on => :create validates_confirmation_of :password validates_length_of :login, :within => 3..40 validates_length_of :password, :within => 5..40 end

ActiveRecord - Assoziationen Assoziationen machen Arbeiten mit zusammenhängenden Daten sehr einfach class Order < ActiveRecord::Base belongs_to :customer end class Customer < ActiveRecord::Base has_many :orders end ich = Customer.find_by_vorname( Johannes ) ich.orders => [#order1, #order2,...]

ActiveRecord - Assoziationen

ActiveRecord - Assoziationen

ActiveRecord - Assoziationen

Der Controller Die Aufgaben des Controllers kann man unterteilen in 1. Daten aus einem oder mehreren Models holen (sprich: Instanzen) 2. Eventuell etwas mit diesen Daten machen 3. Daten an ein View weitergeben zur Anzeige

Trennung Controller & View Aufgaben: Controller: Programmlogik View: Darstellung / Layout Aufbau: Controller: Einfache Ruby-Klasse View: eruby, Embedded Ruby in HTML (wie z.b. PHP) Beispiel: <% 3.times do %> <b><%= Hello World %></b><br/> <% end %>

Controller & View app/controllers/people_controller.rb class PeopleController < ApplicationController def list @customers = Customer.find :all end end app/views/people/list.rhtml <table> <% @customers.each do customer %> <tr><td><%= customer.vorname %></td> <td><%= customer.nachname %></td></tr> <% end %> </table> Aufruf von http://localhost:3000/people/list

Rails - Anwendungsordner Neue Rails-Applikation mit: rails neuesprojekt app app controllers controllers helpers helpers models models views views config config db db doc doc lib lib log log public public script script test test tmp tmp vendor vendor

Rails - Anwendungsordner app controllers Controller, verbinden Models und Views helpers Hilfsmethoden die in mehreren Views benutzt werden models Models (entsprechend z.b. den Tabellen in der Datenbank) views HTML-Templates die zur Anzeige der Webseite benutzt werden config Anwendungs- & Datenbankkonfiguration public Statische öffentliche Dateien (Bilder, Stylesheets) script Rails Hilfsprogramme und Debugging-Tools

Rails - Entwicklungshilfen script console Ruby-Konsole, schnelles Testen von z.b. Models dbconsole Praktischer Shortcut, User/Passwort aus config/database.yml generate Allround-Generator für Grundgerüste (Controllers, Models, etc.) plugin Plugins installieren server Entwicklungs-Webserver auf localhost:3000 starten

Rails - Installation & Maintenance Ruby benutzt eigene Paketverwaltung: RubyGems Vorteile: Schnelle und einfache Installation auch kleiner Programme Programme ( Gems ) sind unabhängig von Distribution Parallele Installation verschiedener Versionen Befehle: gem list local - Installierte Gems anzeigen gem install <name> - Gem laden und installieren gem update - Installierte Gems updaten

Rails - Installation & Maintenance Rails benutzt Version mit der das Projekt erstellt wurde. Bei einem Update der Gems (rails, activerecord,...) wird nicht automatisch die neuste Version benutzt. Rails-Applikation updaten: In config/environment.rb muss RAILS_GEM_VERSION angepasst werden.

Rails - Lernen Ein Rails Tutorial benutzen Oftmals kleinere Anwendungen (Weblog, etc.) Bestehende Rails Projekte angucken (z.b. aus dem NOC) Nachverfolgen von Webseitenaufruf über Controller, Model, View Datenbankschema ausdenken und mit Scaffold-Generator Code erzeugen Ruby benutzen (für kleinere Tools, Parser, etc.) Vorsicht! Rails entwickelt sich sehr schnell und Best-Practices haben sich mehrfach geändert. Deshalb immer sicher stellen dass Dokumentation auf aktuellem Stand ist.

Rails im NOC Viele ähnliche Projekte, Code-Wiederverwendung häufig: RadiusAdmin Administration von Radius Servern/Usern DHCPAdmin Administration von DHCP-Servern / Hosts NOC-Störungsmeldungen Verwaltung in Rails Networks-Verwaltung Vorher flache XML-Datei ;) VoIPAdmin In der Entwicklung MoPS-Gastzugänge / MoPS-Weblogin

Rails - Alternativen Rails ist ein Framework von vielen: Symfony (PHP) http://www.symfony-project.org/ CakePHP (PHP) http://cakephp.org/ Django (Python) http://www.djangoproject.com/ Merb (Ruby), Merge mit RoR 3 http://www.merbivore.com/ Catalyst (Perl) http://www.catalystframework.org/ Viele neuere Frameworks verhalten sich wie Rails

Literatur zu Ruby & Rails Rails Guides - http://guides.rubyonrails.org/ Längere Tutorials, generell und über einzelne Komponenten Agile Web Development with Rails, 3rd Edition The Pragmatic Bookshelf, ISBN: 978-1-93435-616-6 Sehr ausführliches Rails-Buch mit Tutorial-Teil Rails API - http://api.rubyonrails.org/ Rails API Dokumentation Railscasts - http://railscasts.com/ Kurze Screencasts zu einzelnen Techniken Ruby Core rdoc - http://www.ruby-doc.org/core/ Klassen- und Library-Referenz http://www.ruby-doc.org/docs/programmingruby/ html/builtins.html (Alt) Programming Ruby, 2nd Edition The Pragmatic Bookshelf, ISBN: 978-0-9745-1405-5 Das Pickaxe-Book, sehr umfassend (mit Referenz)

The End Demorunde! Folgefragen können gerne an gilger@rz.rwth-aachen.de und lederhofer@rz.rwth-aachen.de gerichtet werden. Oder einfach vorbei schauen ;)