2012-08-08 58 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