在补充或IRB中重复使用Ruby DSL?
-
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
我知道您可以像Ruby脚本一样访问IRB 这个
但是,是否有一种方法可以降至命令行并将范围更改为默认情况下执行对象的实例方法?
例如
irb> uni_commandline support
uni> connect
uni> exec "LIST FILE A1"
.... output .....
uni> disconnect
解决方案
在IRB中,您可以使用 irb
命令在对象范围内移动:
irb> irb some_object
从那时起,任何命令将在该对象的范围内执行(因此您可以直接调用其实例方法)。
不隶属于 StackOverflow