Повторное использование Ruby DSL в реплике или IRB?
-
22-10-2019 - |
Вопрос
Я разработал простой 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
С тех пор любые команды будут выполняться внутри области этого объекта (так что вы можете напрямую вызвать его методы экземпляра).
Не связан с StackOverflow