2011-04-08 44 views
2

在進行J2EE開發時,我發現調試時很方便查看由JSP編譯器生成的Java類。在Ruby中,如何檢查由.html.erb模板生成的類?

我該如何在Ruby中做同樣的事情?由於它全部在內存中,它不會生成我可以查看的文件。我相信這是爲模板生成相應對象的ERB模塊,所以我如何才能真正查看該對象?我可以在某處放置調試器語句並使用rdb嗎?是否有一些配置值可以告訴它轉儲對象定義?我正在使用rails,以防有所作爲。

+1

爲什麼要「檢查由.html.erb模板生成的類」?你想解決什麼問題?所陳述的問題沒有太大意義,所以我們需要更多的背景。 – 2011-04-08 23:00:50

回答

2

我不認爲rails會爲您的視圖生成一個類。處理文件後基本上調用eval。或者你的意思是在解析模板時檢查erb對象?

如果是後者,你可以在lib \ ruby​​ \ 1.9.1中找到erb.rb我想你可以在整個文件中放一個調試器語句。

1

我總是習慣於將以下內容添加到我的視圖(佈局)中,該視圖允許我檢查或調試相關視圖正在使用的參數。

<%= debug(params) %> 

這將格式化所有的參數YAML和哈希格式顯示出來。

查看源代碼中的方法以獲得更好的理解。 SOURCE

1

由於語言差異,與Java方式相比有一些差異。編譯時對Ruby

大多數模板庫,請按照下列步驟/優化:

  1. 模板被編譯成Ruby源代碼 - 不是一個階層,而是一個長期的過程,追加到一個字符串緩衝區在遍歷邏輯的原始模板。
  2. 這個ruby代碼被評估以便被綁定供以後參考,最好在方法體內。這樣,它只被解釋器解析一次。
  3. 調用包含已解析模板的邏輯的方法(或其他上下文)以呈現它。

無論如何,編譯模板代碼,因此看起來很像你的原始模板的多喧鬧的版本,一般不會幫你調試,除非你正在調試的模板語言本身。

任何有興趣的模板語言實現可能享受Tilt code環顧四周(使用不同的模板語言與相同的顯示界面和優化),以及Temple(一個偉大的模板語言間實現)。

+0

我喜歡行調試器,所以Vadim建議在erb.rb中放置調試器語句應該讓我得到我想要的。但你的答案中有趣的信息,謝謝。 – pduey 2011-04-20 18:24:28