Ruby:DSL方法的可见性?

时间:2010-11-10 19:45:26

标签: ruby dsl

我正在尝试为Ruby程序编写DSL。它目前的工作原理如下

generator.format 
  title "Text"
  author "John Doe"
  body "Text"
end
generator.generate!

我应该提供generator.format内部调用的方法的可见性?目前我将每种格式化方法都视为protected但是当我测试它们时,我必须将每个调用包装在instance_eval中以访问它们。我应该在什么样的可见性声明我的DSL方法?

1 个答案:

答案 0 :(得分:1)

  

当我测试它们时,我必须将每个呼叫包裹在instance_eval中以访问它们

你说这就像有另一种解决方案。

如果要在没有显式对象的情况下调用方法,则必须使用this更改instance_eval

现在为了确保这些方法的可见性,我建议使用尽可能低的可见度private