1. Daniel Dengler
web developer
Ruby on Rails
Workshop SS 2009
„Ruby on Rails“ and the Rails-Logo are registered trademarks of David Heinemeier Hansson – www.rubyonrails.org
2. 3
Ruby
„ist eine dynamische, freie Programmiersprache,
die sich einfach anwenden und produktiv einsetzen
lässt. Sie hat eine elegante Syntax, die man leicht
lesen und schreiben kann.“
(Quelle: http://www.ruby-lang.org /de)
4. Geschichte
1993 von Yukihiro Matsumoto in
Japan entwickelt. Ein üsse aus
Smalltalk, Perl, Python & LISP
1995 Erste Veröffentlichung
2000 erste nicht japanische
Literatur in Europa und Amerika
2004 Erscheinen von Ruby on
Rails verhilft Ruby zum heutigen
Erfolg
Quellen: http://www.ruby-lang.org/de/about, http://de.wikipedia.org/wiki/Ruby_%28Programmiersprache%29, Stand: 15.10.2007
5. Grundsätzliches
• Formatierung: 2 Leerzeichen als Einrückung
• Keine Semikolons. Nur wenn man mehrere
Anweisungen in eine Zeile bringen will nötig
• Klammern können weggelassen werden, solange die
Anweisung eindeutig bleibt
• Implizite Rückgabewerte. Das Ergebnis der letzten
ausgeführten Operation ist gleichzeitig
Rückgabewert der Methode
(Quelle: vgl. R. Wartala, J. Krutisch: Webanwendungen mit Ruby on Rails, Addison-Wesley 2007)
6. Grundsätzliches
• Konstanten- und Klassennamen beginnen mit
einem Großbuchstaben
• Variablen- und Methodennamen beginnen mit
einem Kleinbuchstaben
• Variablen müssen vor ihrer Verwendung nicht
de niert werden
• Vollständig Objekt-Orientiert
(es gibt keine primitiven Datentypen)
18. Kontrollstrukturen
• Steuern den Programmablauf
• Wichtige Kontrollstrukturen in Ruby
• Entscheidungen: if, unless, case
• Schleifen: while, until, for, .each
19. a=3
if a < 5
puts quot;a ist kleiner als 5quot;
elsif a == 5
puts quot;a ist gleich 5quot;
else
puts quot;a ist größer als 5quot;
end
farbe = :rot
if farbe != :grün
puts 'Die Farbe ist nicht Grün'
end
# unless ist das negierte if
unless farbe == :grün
puts 'Die Farbe ist nicht Grün'
end
puts 'Die Farbe ist nicht Grün' unless farbe == :grün
puts (a == 5 ? 'a ist gleich 5' : 'a ist nicht gleich 5')
20. farbe = :rot
case farbe
when :grün
puts 'Die Farbe ist Grün'
when :rot, :blau
puts 'Die Farbe ist Rot oder Blau'
else
puts 'Die Farbe ist nicht bekannt'
end
a=1
while a < 3
puts a
# Inkrement Operator (+1)
a++ # entspricht a = a + 1
end
# Ausgabe: 1 2
21. Klassen, Methoden & Objekte
• Klassen beginnen mit den Schlüsselwort class
und können verschiedene Methoden beinhalten
• Methoden beginnen mit dem Schlüsselwort def
• Die konkrete Instanz einer Klasse ist ein Objekt
23. class Fahrzeug
def kmh
@kmh # gleichbedeutend mit: return @kmh
end
def kmh=(wert)
@kmh = wert
end
end
auto = Fahrzeug.new
auto.kmh = 10
auto.kmh=(10)
puts auto.kmh # >> 10
24. class Fahrzeug class Fahrzeug
def kmh attr_reader :kmh
@kmh attr_writer :kmh
end end
def kmh=(kmh)
@kmh = kmh class Fahrzeug
end attr_accessor :kmh
end end
class Fahrzeug auto = Fahrzeug.new
attr_reader :kmh
def kmh=(kmh) auto.kmh = 10
@kmh = kmh
end puts auto.kmh
end # >> 10
25. class Fahrzeug
attr_accessor :kmh
# wird beim Erstellen aufgerufen
def initialize(kmh)
@kmh = kmh
end
def beschleunigen
@kmh += 10 # entspricht: @kmh = @kmh + 10
end
end
auto = Fahrzeug.new(5)
auto.kmh # => 5
auto.kmh = 10 # => 10
auto.beschleunigen # => 20
26. class Fahrzeug
attr_accessor :kmh
def initialize(kmh)
# kmh ist eine Variable
# @kmh ist eine Instanzvariable
@kmh = kmh
end
def beschleunigen
@kmh += 10
end
end
auto = Fahrzeug.new(5)
auto.kmh # => 5
auto.kmh = 10 # => 10
auto.beschleunigen # => 20
# new, kmh, kmh= und beschleunigen sind
Methodenaufrufe
27. class Fahrzeug
attr_accessor :kmh
def initialize(kmh = 0)
@kmh = kmh
end
def beschleunigen
@kmh += 10
end
end
auto = Fahrzeug.new(5)
auto.kmh # => 5
auto.beschleunigen # => 15
auto = Fahrzeug.new
auto.kmh # => 0
auto.beschleunigen # => 10
28. class Auto < Fahrzeug auto_a = Auto.new
@@anzahl = 0 auto_a.kmh # => 0
# @@anzahl ist eine auto_a.beschleunigen
Klassenvariable # => 25
auto_a.anzahl # => 1
def initialize auto_b = Auto.new
@@anzahl++ auto_b.anzahl # => 2
super auto_a.anzahl # => 2
end auto_a.kmh # => 25
auto_b.kmh # => 0
def beschleunigen
@kmh += 25
end
def anzahl
@@anzahl
end
end
30. Online Ruby Interpreter
• http://tryruby.hobix.com
• Geeignet um den Quellcode der Beispiele selbst zu
testen und sich mit der Sprache vertraut zu machen
• Bietet ein Ruby-Lern-Tutorial aus 8 Blöcken
• Bitte jetzt anfangen (und zu Hause fertig machen!)
• Lesen und merken sie sich die Anweisungen des
Anfangs, falls sie stecken bleiben sollten!
( help Kapitelnummer, Ctrl + D)