Вопрос

Я разработал простой DSL для задач в базе данных вселенной в Jruby. Это выглядит примерно так

support = { 
    :host => 'localhost', 
    :account => 'SUPPORT'
}

uni_task support do 
    connect
    exec "LIST FILE A1"
    disconnect
end

и реализуется таким

def uni_task(config, &block)
    session = UniSession.new
    session.instance_eval &block
end

Я знаю, что вы можете упасть в IRB в сценарии рубина, как это

Но есть ли способ переехать в командную строку и изменить область применения, чтобы выполнить методы экземпляра объекта по умолчанию?

Например

irb> uni_commandline support
uni> connect
uni> exec "LIST FILE A1"

     .... output .....

uni> disconnect
Это было полезно?

Решение

В IRB вы можете использовать irb команда для перемещения внутри объекта:

irb> irb some_object

С тех пор любые команды будут выполняться внутри области этого объекта (так что вы можете напрямую вызвать его методы экземпляра).

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top