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

Ruby on Rails - Eine kurze Einführung

  • 1.
    Ruby on Rails Eine kurze Einführung Thomas R. Koll http://ananasblau.com 3. OCWD Juli 2009 Montag, 13. Juli 2009
  • 2.
    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
  • 3.
    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
  • 4.
    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
  • 5.
    Die ersten Schritte • rails my_app • ./script/server • ./script/console • ./script/generate • rake (rake -T für mehr Optionen) Montag, 13. Juli 2009
  • 6.
    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
  • 7.
    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
  • 8.
    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
  • 9.
    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
  • 10.
    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
  • 11.
  • 12.
    Für Fortgeschrittene • Rack • REST • Generatoren • Plugins und Gems • Meta-Programming • Engines Montag, 13. Juli 2009
  • 13.
    Tools für‘s deployment • git+ssh (siehe github.com) • apache mit passenger (mod_rails) • capistrano Montag, 13. Juli 2009