Debugging Rails入門:五個必備技巧

Adler @ 2014-10-17


從第一天學寫code開始,bug就隨之而來。就算只是不小心把true打錯成truee,程式也會很無情的賞你一個大大的錯誤訊息。在學Rails的路上我們都不孤單,不是因為有很棒的Rails社群,而是因為每天都有新的bug相伴左右。

我開發Rails的時間不長,但在一路跌跌撞撞之下,碰過的bug也實在不少。在這邊彙整一些前人的經驗及自身的學習,提供幾個有用的技巧、技巧,希望新手都能快速了解遇到bug時該用什麼樣的方法來應對。

以下分為五篇文章:

第1篇:看懂錯誤訊息

遇到bug,第一件事就是要把訊息看清楚!本篇以非常入門的角度介紹在irb以及Rails當中遇到錯誤時,畫面中的訊息分為哪些區塊,以及該如何解讀。

第2篇:九個常見的錯誤訊息

看懂錯誤訊息以後,如果能自己快速處理掉,那真是再好不過。本篇介紹九個常見的錯誤訊息,分享一些常見狀況,看到底有哪些狀況可以直接照邏輯判斷錯誤的地方。

第3篇:遇到bug直接在瀏覽器除錯

一般來說,遇到bug都是回到code當中瀏覽、思考,但更直接的方法是在遇到bug時直接從瀏覽器的當下狀況直接進行分析。儘管從Rails 4.2.0開始已經有內建的web console可以直接debug,但就功能完整度及畫面精細度來看,better_errors這個gem還是大勝一籌。他在瀏覽器當中直接建立一個console,使用者可以在console當中解析各個method、variable的狀況。例如我們有以下的code:

def comment
    Comment.create(:post_id => @post[:id])
end

如果在這個method產生錯誤,就可以在console中分別執行@post、@post[:id]、Comment、Comment.create!,看各個指令有哪一項不如預期,就知道要從哪邊下手修改了!本篇介紹better_errors的安裝及使用方法。

第4篇:沒有錯誤訊息,卻有錯誤的結果

有些時候我們的計算方法就是不如預期,卻沒有錯誤訊息的出現,那該怎麼處理呢?反覆測試是一個方法,但更直接的方法是使用gem 'pry'在code當中設定斷點,只要程式執行到這個斷點,就會在console當中剖析,這個gem最棒的是可以用step和next兩個指令來逐行掃描,遇到複雜的method可以說是非常好的幫手。

第5篇:用DevTools檢查前端及後端的溝通

在使用複雜的前端框架時,常常會需要搭配ajax進行資料庫的調整,而在Rails與javascript溝通的過程中,難免會產生奇怪的結果。這時候到底要從哪邊開始看呢?大家都不希望Rails的程式碼看半天結果錯在javascript的variable名稱打錯了。這時使用Chrome的DevTools或Firefox的Firebug可以了解從前端發送的ajax request以及收到的response為何。

如果是request有問題,就請從javascript開始debug;如果是response有問題,就從Rails開始觀察。

免費好工具,不學嗎?


以上五篇文章介紹了基本debug的概念及工具,想必大家應該對於基本的debug都已經有很完整的了解。希望大家都能漸入佳境喔!