Django - The Web framework for perfectionists with deadlines
Ruby On Rails Hermann Stern Bcklu
1. Ruby on Rails
BarCamp Klagenfurt
7. / 8. Februar 2009
Hermann Stern
hstern@derstern.at
http://twitter.com/hstern
Hermann Stern www.derstern.at
07.02.2009 1
2. Inhalt
Ruby? on Rails
Ruby on Rails?
Konzepte
Installation
Entwicklungsumgebung
Beispiel
BarCamp Lectures
Und jetzt?
Hermann Stern www.derstern.at
07.02.2009 2
3. Ruby? on Rails (1/3)
http://www.ruby-lang.org/
Objekt-orientierte Interpretersprache
ruby filename.rb
Alles ist ein Objekt
Zahl 1 ist eine Instanz der Klasse Fixnum
Daher keine Funktionen, nur Methoden
Dynamisch / Weakly typed
Wechsel des Typs einer Variablen möglich
Interactive Ruby Shell
http://tryruby.hobix.com/
Hermann Stern www.derstern.at
07.02.2009 3
4. Ruby? on Rails (2/3)
Syntax
Anweisung endet am Ende der Zeile, kein ; notwendig
Variablen und Methoden klein (order_status)
Klassen groß (Registration)
Variablen:
lokal (variable)
global ($variable)
Instanzvariablen (@variable): Attribute von Objekten
Klassenvariablen (@@variable): Alle Instanzen der
Klassen teilen sich die Variablen
Typen: String, Fixnum, Float, Array etc.
Hermann Stern www.derstern.at
07.02.2009 4
5. Ruby? on Rails (3/3)
# Kommentar einzeilig
=begin
Kommentar mehrzeilig
=end
Variablen werden nicht deklariert
nehmen den Datentyp des zugewiesenen Wertes an
a=2
text = „mein Text“
text = String.new(„mein Text“) geht aber auch
Methoden
text.length()
RoR generiert viel Code, von dem man dann weiter
arbeiten kann….
Hermann Stern www.derstern.at
07.02.2009 5
6. Ruby on Rails? (1/2)
Framework für datenbankgestützte
Webapplikationen
In Ruby geschrieben
DRY - quot;Don’t Repeat Yourselfquot;
Convention Over Configuration
Alles hat (s)einen fixen Platz
HTML Files, Bilder, JS, etc.
Zugriff auf Daten, Pfade, Links normiert
Opinionated
„there is a best way to do something“
Hermann Stern www.derstern.at
07.02.2009 6
7. Ruby on Rails? (2/2)
Model View Controller (MVC)
Modell (Daten, meist in Datenbanktabellen)
Action Record
View (User Interface, HTML mit Ruby Code)
Action View
Controller (verbinden Modell und View)
Action Controller
Wird alles als Ruby Sourcecode generiert
Start mit Datenmodell, Controller und View
setzen dann darauf auf
Hermann Stern www.derstern.at
07.02.2009 7
8. Konzepte (1/2)
Generatoren
Modelle
CRUD (Create Retrieve Update Delete)
Controller
Views
etc.
Scaffolds
Modell, View und Controller
Rake tasks
db:update, db:create; rails:update etc.
Hermann Stern www.derstern.at
07.02.2009 8
9. Konzepte (2/2)
Action Record Naming Convention
Klasse: Einzahl in Englisch (Student)
Tabellen: Mehrzahl in Englisch (students)
holt sich RoR aus einem Wörterbuch)
• Person => people
• Student => students
Mapping von URLs auf Methoden in Controllern
/controller class name/controller method name
http://localhost:3001/lectures
http://localhost:3001/lectures/new
http://localhost:3001/lectures/show/1
Hermann Stern www.derstern.at
07.02.2009 9
11. Entwicklungsumgebungen
Aptana RadRails
Allein oder als Eclipse Plugin
http://www.aptana.com/rails/
EasyEclipse http://www.easyeclipse.org/
NetBeans for Ruby
http://www.netbeans.org/
Für Puristen:
Command line & Text Editor
TextMate (OSX), VIM for Rails, Emacs for Rails
Hermann Stern www.derstern.at
07.02.2009 11
13. Beispiel: Neues Projekt
Eclipse | Neues Rails Projekt anlegen
WEBrick
Mongrel
Hermann Stern www.derstern.at
07.02.2009 13
14. Beispiel: Verzeichnisse
Alles hat seinen fixen Platz
app (Applikation)
controllers
helpers
models
views
config (Konfiguration)
public (HTML, JS, Bilder)
Hermann Stern www.derstern.at
07.02.2009 14
15. Beispiel: Webserver starten
Direkt von Eclipse aus
http://localhost:3010/
TO Dos auf Startseite
Datenbank erstellen
Controller
Modelle und Views
Default Routen
Hermann Stern www.derstern.at
07.02.2009 15
16. Beispiel: Ruby on Rails Startseite
Hermann Stern www.derstern.at
07.02.2009 16
17. Beispiel: Datenbank konfigurieren
config/database.yml
Standard: sqlite3
MySQL, PostgreSQL
Drei Umgebungen
Entwicklung (kein Cache, bessere
Fehlermeldungen, keine Emails) default
Produktion (Cache aktiv)
Test (für Testklassen)
config/environments/<NAME>.rb
Definition eigener Umgebungen möglich
Hermann Stern www.derstern.at
07.02.2009 17
19. Beispiel: Controlleranlegen
Startseite der Applikation
Name des Controllers (home) Aktion (index)
Name des Controllers (home) Aktion (index)
Angelegte Dateien
controllers/home_controller.rb
helpers/home_helper.rb
views/home/index.html.erb
Hermann Stern www.derstern.at
07.02.2009 19
23. Beispiel: models/lecture.rb
Noch leer, da keine „Sonderwünsche“
Später
Relationen zu anderen Tabellen
has_many, belongs_to
Validierungen
Wert aus einer Liste, Länge, Typ etc.
Hermann Stern www.derstern.at
07.02.2009 23
26. Beispiel: db/migrate/2009..lectures.rb
„Normale Tabellen“
Inhalt kann selber editieren werden
Automatisch erstellte Felder
created_at
updated_at
Wieder „gratis“ Funktionalität ohne Mehrarbeit
Hermann Stern www.derstern.at
07.02.2009 26
27. Beispiel: Default Routen (1/2)
Pfade durch die Applikation
Neue Startseite setzen
public/index.html löschen
config/routes.rb editieren
map.root :controller => quot;homequot;
map.connect ':controller/:action/:id'
map.connect ':controller/:action/:id.:format‚
Hermann Stern www.derstern.at
07.02.2009 27
28. Beispiel: Default Routen (2/2)
views/home/index.html.erb anpassen
<h1>BarCamp Anmeldungen</h1>
<p>
Link zu den Sessions
</p>
<%= link_to quot;Lecturesquot;, lectures_path %>
(lectures_path wurde automatisch erstellt)
Hermann Stern www.derstern.at
07.02.2009 28
32. Beispiel: So gehts weiter…
Anpassen der HTML Templates
Registration durch Scaffold hinzufügen
Tabellen verbinden
belongs to, has many, etc
class Lecture < ActiveRecord::Base
has_many :Registrations
end
Weitere Methoden verfügbar
@registrations = Lecture.find_all
Hermann Stern www.derstern.at
07.02.2009 32
33. Und jetzt?
http://en.wikibooks.org/wiki/Ruby_on_Rails
http://en.wikibooks.org/wiki/Ruby
http://openbook.galileocomputing.de/ruby_on_rails/
Ausprobieren, Learning by Doing
Kreativ sein
http://www.peepalot.com
Online stellen
Wenige Provider bieten WEBrick oder Mongrel
Es gibt auch ein Apache Modul für RoR (mod_rails)
Hermann Stern www.derstern.at
07.02.2009 33