Ruby on Rails Eine kurze Einführung
Thomas R. Koll http://ananasblau.com 3. OCWD Juli 2009
Montag, 13. Juli 2009
Facts • • • • • •
Montag, 13. Juli 2009
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
Hauptbestandteile • • • • • • • Montag, 13. Juli 2009
Rack ActiveRecord ActionView, ERB, HAML, liquid ActionController I18n, named scopes, rails templates RSpec, Cucumber, Test::Unit URLHelper, Routing, Generatoren, Plugins
Setup • • • • •
Montag, 13. Juli 2009
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
Die ersten Schritte • • • • •
Montag, 13. Juli 2009
rails my_app ./script/server ./script/console ./script/generate rake (rake -T für mehr Optionen)
Scaffolding
Montag, 13. Juli 2009
• •
Erstellt einfache Views, teils auch mit JS
•
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.
Erlaubt schnelles Prototyping
Tests • • • •
Montag, 13. Juli 2009
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
Model • • • • •
Montag, 13. Juli 2009
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
Controller • • •
Montag, 13. Juli 2009
Empfängt die Requests vom Webserver/Rack before/after Filter, REST Holt Daten und gibt diese an die View weiter
Views • • • • • •
Montag, 13. Juli 2009
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
Für Fortgeschrittene • • • • • •
Montag, 13. Juli 2009
Rack REST Generatoren Plugins und Gems Meta-Programming Engines
Tools für‘s deployment • • •
Montag, 13. Juli 2009
git+ssh (siehe github.com) apache mit passenger (mod_rails) capistrano