2012-08-08 60 views
0

我正在使用红宝石实现一个内部DSL。我提供了一个命令行工具来执行用文件写入的DSL脚本(很像puppet)。起初,我将使用load()来运行脚本,事情是,我希望能够在执行脚本之前传递一些上下文。我希望能够以文本形式阅读脚本并将其视为块,然后使用某个给定的上下文执行该块。是这样的可能吗?像红宝石dsl的木偶

或者这些事情通常如何实现?它可以确保,因为木偶做到了。但在挖掘其代码基础之前,我在这里尝试。

另外,有没有我可以看到的内部DSL实现的任何不错的小例子?

回答

1
+0

除此之外,你应该知道**类**元类在Ruby中的层次,肯定明白** ** class_eval之间的差异** instance_eval的**。 – 2012-08-08 20:18:56

+0

如果你打算花更多时间在那,你最好阅读这本书[** Metaprogramming Ruby:Program Like Ruby Pros **](http://pragprog.com/book/ppmetr/metaprogramming-ruby) – 2012-08-08 20:21:19