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
¿Fue útil?

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
scroll top