Повторное использование Ruby DSL в REPL или IRB? - PullRequest
1 голос
/ 10 июня 2011

Я разработал простой DSL для задач в базе данных UniVerse в 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 в сценарии ruby, например this

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

Например

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

     .... output .....

uni> disconnect

1 Ответ

3 голосов
/ 10 июня 2011

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

irb> irb some_object

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

...