2012-11-13 67 views
1

說我是與現有的Rails應用程序的工作。分解應用程序的最佳方式是什麼?如何回溯在Rails產量

如果我在佈局開始/ application.html.erb我會看到一個或多個<%的收率%>語句。我如何輕鬆地從瀏覽器中呈現的視圖退回到構建收益率的底層代碼?即:沒有通讀每個視圖中的代碼。


這不是我在尋找的這個問題,但它可能會幫助別人在Rails上尋找幫助。我有一段時間使用Rails的腳註寶石被。它向頁面添加了一個頁腳,該頁面包含各種有用的信息:實例變量,查看信息,甚至包含計時的SQL語句。

gem'rails-footnotes'要安裝

回答

2

如果調試器是太複雜了,你正在尋找更多的一絲文件,您可能可以通過使用默認的日誌記錄輸出。例如,做出請求時,類似於以下輸出是通過默認的輸出:

Started GET "/login" for 127.0.0.1 at 2012-11-27 17:52:16 -0600 
Processing by SessionsController#create as HTML  
    Rendered sessions/create.html.erb within layouts/application (1.0ms) 
    Rendered application/_header.html.erb (1.0ms) 
    Rendered application/_wrapper.html.erb (54.0ms) 
Completed 200 OK in 150ms (Views: 150.0ms | ActiveRecord: 0.0ms) 

正如你可以看到,輸出包含被訪問,控制器和動作(SessionsController#create),以及各種泛音爲請求渲染(例如,Rendered sessions/create.html.erb within layouts/application)。

如果您正在尋找這種簡單性和調試器的複雜性之間的某種差異,您可能希望嘗試類似rack-bugmini-profilerrailscast)。

這可能是你正在尋找的是一個簡單的好IDE。一些專家可能會嘲笑使用IDE的想法,但我認爲他們可以爲新手和專家提供許多優勢。在你的情況,你很可能是因爲能夠很容易地設定beakpoint和視覺單步你的代碼中受益,因爲它執行,沿途檢查變量內容。我真的很喜歡RubyMine,並會毫無保留地推薦它(不是免費的,但免費試用,完全值得的代價)。

+0

嗨布拉德感謝您的帖子。機架錯誤看起來相當不錯...除了像許多寶石它似乎過時了。我會去安裝它。 – ardochhigh

+0

對,我沒有意識到你已經在使用rails-footnotes了,這很類似。另一個類似的選項是http://railscasts.com/episodes/368-miniprofiler?view=asciicast - 祝你好運。 –

+0

我更新了答案以反映此討論,以及發佈後發生的一些其他想法。 –

1

您可以使用ruby調試器。

假設你正在使用Ruby 1.9.3(請,如果你沒有反應),你意味着執行以下操作:

  • 在你的Gemfile,包括:gem 'debugger'
  • 運行bundle節省
  • 在您的控制器(或任何你想要使用它)的地方行,你想代碼停止執行debugger

現在通過瀏覽器打開您的應用程序,並查看您啓動服務器的位置,您應該看到調試提示符。

您可能必須要對你在調試模式下服務器,你如下:

rails server --debugger 

Rails Guide - Debugging Rails Applications

+0

感謝您的回答。這聽起來比查看代碼更難。我一直在尋找一個「一站式商店」,在那裏我可以從渲染的視圖開始,很容易地看到用來構建它的東西。 – ardochhigh

+0

對不起,我真的沒有任何「一站式商店」,我可以想到,具體做什麼你問,他們都需要一些工作在你的最終。 – Magicmarkker

1

只要在代碼中加入raise Exception就可以了。這將生成堆棧跟蹤。

這是一個非常粗略的解決方案 - 我傾向於使用記錄器作爲@BradWerth的建議 - 事實上,Rails日誌通常就足夠了。調試器在某些情況下非常有用,您需要深入挖掘,但根據我的經驗,設置和使用這些設備是一項極其痛苦的事情:-)