Ruby DSL in einem REPL oder IRB wiederverwenden?
-
22-10-2019 - |
Frage
Ich habe eine einfache DSL für Aufgaben in einer UniVerse-Datenbank in jruby entwickelt.Es sieht ungefähr so aus
support = {
:host => 'localhost',
:account => 'SUPPORT'
}
uni_task support do
connect
exec "LIST FILE A1"
disconnect
end
und wird so umgesetzt
def uni_task(config, &block)
session = UniSession.new
session.instance_eval &block
end
Mir ist bewusst, dass Sie in einem Ruby-Skript wie „irb“ zu IRB wechseln können Das
Aber gibt es eine Möglichkeit, zu einer Befehlszeile zu wechseln und den Bereich so zu ändern, dass standardmäßig Instanzmethoden eines Objekts ausgeführt werden?
Z.B
irb> uni_commandline support
uni> connect
uni> exec "LIST FILE A1"
.... output .....
uni> disconnect
Lösung
Im IRB können Sie das verwenden irb
Befehl zum Bewegen innerhalb eines Objektbereichs:
irb> irb some_object
Von da an werden alle Befehle innerhalb des Gültigkeitsbereichs dieses Objekts ausgeführt (Sie können also seine Instanzmethoden direkt aufrufen).
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow