如何解决在REPL或irb中重新使用Ruby DSL?
| 我为jruby中的UniVerse数据库上的任务开发了简单的DSL。看起来像这样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
从那时起,任何命令都将在该对象的范围内执行(因此您可以直接调用其实例方法)。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。