Bibliotheken werden mit der Anweisung require, gefolgt von dem Namen der Bibliothek in Anführungszeichen, eingebunden. Für den konstruierten Fall, dass ein Wirtschaftsinformatik-Student der FH Wedel in einer Informatik-Seminar-Ausarbeitung über ruby eine Datei vergessen hat, könnte er die Bibliothek ftools verwenden, um seine Dateien umzubenennen:
>> require "ftools"
=> true
>> 5.downto(1) {|i| File.mv("ruby#{i}.htm", "ruby#{i+1}.htm") }
=> 5
implements serializable
in Java).
class X
"
attr_reader (:x)
def initialize (x)
@x=x
end
end
a=X.new ("HSV")
b=Marshal.dump(a)
c=Marshal.load(b)
puts c.x
count=0
t1=Thread.new do
1.upto (23) do
x = rand (100)
puts "Thread1: #{count+=x}"
sleep (x/100.0)
end
end
t2=Thread.new {
1.upto(23) {
y = rand (100)
puts "Thread2: #{count-=y}"
sleep (y/100.0)
}
}
t1.join
t2.join
Mit Hilfe der Distributed Ruby library (drb) lassen sich Client-Server Anwendungen sehr einfach realisieren. Für die Übergabe von Daten kann das oben beschriebene marshaling verwendet werden. Im folgenden Beispiel ist dies aufgrund akuter Trivialität nicht notwendig.
Das Server-Skript:
require "drb"
class TestServer
attr(:serverAttr, true)
def initialize
@serverAttr="Hallo, Fremder!"
end
end
aServerObject = TestServer.new
DRb.start_service("druby://localhost:9000", aServerObject)
DRb.thread.join>> require "ftools"
Das Client-Skript:
require "drb"
DRb.start_service()
a = DRbObject.new(nil, "druby://localhost:9000")
puts a.serverAttr
a.serverAttr="Auf Wiedersehen, Fremder!"
puts a.serverAttr
f = File.open("testfile")
begin
# ... Kritische Anweisungen
rescue
# ... Behandlung eventueller Fehler
else
# ... Anweisungen, die bei erfolgreicher Ausführung zusätzlich ausgeführt werden sollen
ensure
f.close unless f.nil?
end