¿Reutilizar Ruby DSL en un repl o IRB?
-
22-10-2019 - |
Pregunta
He desarrollado un DSL simple para tareas en una base de datos de un universo en Jruby. Se ve como esto
support = {
:host => 'localhost',
:account => 'SUPPORT'
}
uni_task support do
connect
exec "LIST FILE A1"
disconnect
end
y se implementa así
def uni_task(config, &block)
session = UniSession.new
session.instance_eval &block
end
Soy consciente de que puedes ir a IRB en un guión de Ruby como este
Pero, ¿hay alguna forma de caer a una línea de comando y cambiar el alcance para ejecutar métodos de instancia de un objeto de forma predeterminada?
P.ej
irb> uni_commandline support
uni> connect
uni> exec "LIST FILE A1"
.... output .....
uni> disconnect
Solución
En IRB puedes usar el irb
Comando para moverse dentro de un alcance de objeto:
irb> irb some_object
A partir de entonces, cualquier comando se ejecutará dentro del alcance de ese objeto (para que pueda llamar a sus métodos de instancia directamente).
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow