Sie sind auf Seite 1von 13

Ruby on Rails

Eine kurze Einführung

Thomas R. Koll
http://ananasblau.com
3. OCWD Juli 2009

Montag, 13. Juli 2009


Facts
• Gestartet 2004 von David Heinemeier Hansson (DHH)

• Web-Framework um schnell Applikationen zu erstellen

• Konventionen vor Konfiguration

• Don‘t Repeat yourself (DRI)

• MVC und andere Patterns

• Starker Hang zu Domain Specific Languages

Montag, 13. Juli 2009


Hauptbestandteile
• Rack

• ActiveRecord

• ActionView, ERB, HAML, liquid

• ActionController

• I18n, named scopes, rails templates

• RSpec, Cucumber, Test::Unit

• URLHelper, Routing, Generatoren, Plugins

Montag, 13. Juli 2009


Setup

• One-click Installer for Ruby für Windows

• Mac OSX 10.5 hat schon ruby

• apt-get install ruby libruby irb ri sqlite3 rubygems

• sudo gem update --system

• sudo gem install rails rack rake

Montag, 13. Juli 2009


Die ersten Schritte

• rails my_app

• ./script/server

• ./script/console

• ./script/generate

• rake (rake -T für mehr Optionen)

Montag, 13. Juli 2009


Scaffolding
• Erstellt einfache Views, teils auch mit JS

• Erlaubt schnelles Prototyping

• aber besser HAML, ein paar Helper und alles selber


schreiben für mehr Freiheit.

• Moderner Ansatz im Webdevelopment:


Zuerst ein Design mit dem alle Seiten einverstanden sind.

Montag, 13. Juli 2009


Tests
• Unit-Tests für Models

• Functional Tests für Controller

• Integration Tests für‘s Zusammenspiel

• Zusätzlich Cucumber oder RSpec:

• Stories aus Sicht des Stakeholders

• Einfacher zu verstehen

Montag, 13. Juli 2009


Model
• Verbindung zur Datenbank, REST-API oder ähnliches

• Automatische get, set und ? Methoden

• new, create, save, find, update, count, exist?, destroy

• dynamische finder und auch find_or_create_by...

• named scopes, callbacks, counter_cache

Montag, 13. Juli 2009


Controller
• Empfängt die Requests vom Webserver/Rack

• before/after Filter, REST

• Holt Daten und gibt diese an die View weiter

Montag, 13. Juli 2009


Views
• Endformate: HTML, XML, iPhone, iCal, ics, rss, pdf, …

• Viele Layout-Engines: ERB, HAML, liquid, …

• Mehrere Layouts möglich (per Controller)

• Partials die wiederverwendet werden können

• Viele Helper z.b. für JavaScript

• content_for und yield

Montag, 13. Juli 2009


Montag, 13. Juli 2009
Für Fortgeschrittene
• Rack

• REST

• Generatoren

• Plugins und Gems

• Meta-Programming

• Engines

Montag, 13. Juli 2009


Tools für‘s deployment

• git+ssh (siehe github.com)

• apache mit passenger (mod_rails)

• capistrano

Montag, 13. Juli 2009