8. 3. Mehr Ruby
#!/opt/local/bin/ruby
Pfad zum Ruby-Interpreter.
puts "Ruby, ruby ruby!"
Muss an das jeweilige System
angepasst werden.
Dipl.-Inf. (FH) Julian Fischer - fischer@avarteq.de - www.avarteq.de - www.railshoster.de - www.enterprise-rails.de
4
25. 3. Mehr Ruby
• require
• am häufigsten verwendet
Dipl.-Inf. (FH) Julian Fischer - fischer@avarteq.de - www.avarteq.de - www.railshoster.de - www.enterprise-rails.de
12
26. 3. Mehr Ruby
• require
• am häufigsten verwendet
• setzt die angegebene Datei in die bereits
bestehende Datei ein
Dipl.-Inf. (FH) Julian Fischer - fischer@avarteq.de - www.avarteq.de - www.railshoster.de - www.enterprise-rails.de
12
27. 3. Mehr Ruby
• require
• am häufigsten verwendet
• setzt die angegebene Datei in die bereits
bestehende Datei ein
• lädt die einzubindende Datei nur einmal!
Dipl.-Inf. (FH) Julian Fischer - fischer@avarteq.de - www.avarteq.de - www.railshoster.de - www.enterprise-rails.de
12
30. 3. Mehr Ruby
• load
• setzt die angegebene Datei ebenfalls in
die bereits bestehende Datei ein
Dipl.-Inf. (FH) Julian Fischer - fischer@avarteq.de - www.avarteq.de - www.railshoster.de - www.enterprise-rails.de
13
31. 3. Mehr Ruby
• load
• setzt die angegebene Datei ebenfalls in
die bereits bestehende Datei ein
• lädt die einzubindende Datei bei
mehrfachem Aufruf mehrmals!
Dipl.-Inf. (FH) Julian Fischer - fischer@avarteq.de - www.avarteq.de - www.railshoster.de - www.enterprise-rails.de
13
59. 3. Mehr Ruby
• begin .. rescue gut zur Fehlerbehandlung
Dipl.-Inf. (FH) Julian Fischer - fischer@avarteq.de - www.avarteq.de - www.railshoster.de - www.enterprise-rails.de
25
60. 3. Mehr Ruby
• begin .. rescue gut zur Fehlerbehandlung
• catch .. trow gut zum Sprung aus
verschachtelten Strukturen
Dipl.-Inf. (FH) Julian Fischer - fischer@avarteq.de - www.avarteq.de - www.railshoster.de - www.enterprise-rails.de
25
61. 3. Mehr Ruby
• begin .. rescue gut zur Fehlerbehandlung
• catch .. trow gut zum Sprung aus
verschachtelten Strukturen
• raise zum Werfen von Ausnahmen
Dipl.-Inf. (FH) Julian Fischer - fischer@avarteq.de - www.avarteq.de - www.railshoster.de - www.enterprise-rails.de
25
70. 3. Mehr Ruby
Beispiel 7 - NET::HTTP - Fortsetzung
[...] Fortsetzung
# Lädt eine Ressource per HTTP von dem durch <<url>> angegebenen Speicherort (ohne Proxy).
def http_get(url)
ret_val = nil
begin
my_url = URI.parse(url)
res = Net::HTTP.start(my_url.host, my_url.port) {|http|
ret_val = http.get(my_url.path)
}
rescue Exception => e
puts "Keine Verbindung: " + e.to_s
end
return ret_val
end
# Herunterladen einer Datei per HTTP
if USE_PROXY then
puts "Ausgabe unter Verwendung eines Proxies"
puts http_get_with_proxy("http://www.iplists.com/nw/google.txt")
else
puts "Ausgabe ohne Verwendung eines Proxies"
puts http_get("http://www.iplists.com/nw/google.txt")
end
Dipl.-Inf. (FH) Julian Fischer - fischer@avarteq.de - www.avarteq.de - www.railshoster.de - www.enterprise-rails.de
29
80. 3. Mehr Ruby
• Vererbung mit „<„ Zeichen
• super zum Aufruf der Funktion des Eltern-Objekts
Dipl.-Inf. (FH) Julian Fischer - fischer@avarteq.de - www.avarteq.de - www.railshoster.de - www.enterprise-rails.de
33
95. 3. Mehr Ruby
module TollesModul
KONSTANTE = "Nicht jedes Beispiel hat einen tieferen Sinn. Es lenkt vom eigentlichen Thema ab.
Diese Aussage ist paradox."
def TollesModul.add(a, b)
return a + b
end
end
module DoofesModul
KONSTANTE = "Beispiele sollen sinn machen, da man sich sonst langweilt."
# Wir wollen hier zeigen, dass diese Methode sich anders verhält
def DoofesModul.add(a, b)
return a * b
end
end
puts TollesModul::add(1,1)
puts DoofesModul::add(1,1)
Dipl.-Inf. (FH) Julian Fischer - fischer@avarteq.de - www.avarteq.de - www.railshoster.de - www.enterprise-rails.de
39
99. 3. Mehr Ruby
• Warum nicht require verwenden?
• Mix-Ins sind Module, die einer Klasse
hinzugefügt werden können
Dipl.-Inf. (FH) Julian Fischer - fischer@avarteq.de - www.avarteq.de - www.railshoster.de - www.enterprise-rails.de
41
100. 3. Mehr Ruby
• Warum nicht require verwenden?
• Mix-Ins sind Module, die einer Klasse
hinzugefügt werden können
• Einer Klasse können mehrere Module
eingemischt werden
Das Mix-In-Konzept ist die Ruby Antwort auf
Mehrfachvererbung
Dipl.-Inf. (FH) Julian Fischer - fischer@avarteq.de - www.avarteq.de - www.railshoster.de - www.enterprise-rails.de
41
103. 3. Mehr Ruby
• Warum nicht require verwenden?
• Sämtliche Methoden des Moduls werden zu
Methoden der jeweiligen Klasse
Dipl.-Inf. (FH) Julian Fischer - fischer@avarteq.de - www.avarteq.de - www.railshoster.de - www.enterprise-rails.de
42
104. 3. Mehr Ruby
• Warum nicht require verwenden?
• Sämtliche Methoden des Moduls werden zu
Methoden der jeweiligen Klasse
• Anders als Java-Interfaces wird also echte
Funktionalität hinzugefügt
Dipl.-Inf. (FH) Julian Fischer - fischer@avarteq.de - www.avarteq.de - www.railshoster.de - www.enterprise-rails.de
42
106. 3. Mehr Ruby
Beispiel 8 - Mixins
#!/opt/local/bin/ruby
module Log
def warn(message)
puts "WARN: " + message.to_s
end
end
module Persistence
def save
puts "Hier wird gespeichert..."
end
end
class MyClass
include Log
include Persistence
def test
warn("Ich hab mich hier mal eingemischt.")
save
end
end
Dipl.-Inf. (FH) Julian Fischer - fischer@avarteq.de - www.avarteq.de - www.railshoster.de - www.enterprise-rails.de
43