2012-02-01 54 views
0

我正在嘗試在每個頁面請求上可視化/理解我的Rails應用程序層次結構。我認爲也許puts caller會做的伎倆,但我不想通過Rails框架本身高度詳細的跟蹤。打印一個應用程序內vs完整的堆棧跟蹤?

我只是主要想要在我自己的Rails應用程序中的依賴腳本,我基本上可以控制它。我可以(不準確地)說我想要的,當發出請求時,在控制檯中它會打印出被調用的根腳本,然後它的所有鏈接直到最後一個視圖erb/haml,等

我怎麼能做到這樣的事情,而不是在我的Rails應用程序中的每個文件中的每個文件的頭部和尾部放置一個puts語句?

如果我插入一個puts "-> #{File.expand_path(File.dirname(__FILE__))}/#{File.basename(__FILE__)}"到每個Rails應用程序的文件,可以或多或少地完成我試圖去,但會沿着這個「Show full path name of the ruby file when it get loaded」東西線更適當地做的伎倆,而無需修改各種文件;保持乾爽?

回答

0

您可以通過檢查文件名來過濾Kernel#caller的輸出。如果它在你的項目目錄中,然後打印它。否則,忽略。

+0

我也想到了這一點,但據我瞭解,如果該進程已經彈出進入助手並返回,它不會顯示。我試圖從頭到尾瞭解一個請求的整個範圍,這樣我就知道在這個幫助器之前調用了這樣一個文件,然後執行了這個控制器,然後這樣和那樣的視圖文件等。 – ylluminate 2012-02-01 18:37:45

+0

並獎勵你點,即使我們的討論是在另一個線程中以更有意義的方式進行:http://stackoverflow.com/questions/9103412/how-to-overload-kernelload/9103466 – ylluminate 2012-02-02 03:34:48

+0

@ylluminate謝謝:) – 2012-02-02 03:35:34