為什么heroku上debug這么難?
我們在做項目的時候,有時候在本地運行的好好的,但是部署到heroku的時候就出現錯誤。出錯不可怕,可怕的是不知道錯在哪里,下面的是heroku的錯誤提示,只告訴你"something went wrong"。你要想問然后呢?哦,下面還有行小字,如果你是網站擁有者,你可以查看logs。
那我們用heroku logs 來看下:密密麻麻的一堆,而且這樣的一堆還有好幾頁,雖然其實還是有線索的,但是這樣找效率太低。看的人一臉生無可戀。
我知道你在想:「如果heroku能像localhost一樣直接來個報錯,告訴我們錯誤在哪里就爽了。」
夢想成真——第三方工具來救駕
正是因為有這個需求,所以有不少第三方都在做這樣的工具,比較出名的有Aribrake,功能強大,但是缺點也比較明顯,最基礎的套餐也要49刀一個月,對于還在只是部署個人網站或小型應用網站來說,太貴了。
那有沒有便宜點的,你別說,還真有!那就是我們今天本文的主角:Rollbar,以下是它的三大特點:
1. 免費
簡直業界良心好嗎?免費的方案每月可以有五千條錯誤提示,錯誤記錄保留30天。用于個人網站和普通網站的測試來說完全夠用。
2. 簡單
跟著下面的教程傻瓜式操作,五分鐘包教會。
3.實用
不但在部署不成功會提示,而且在部署成功后,網站在正常運行期間如果出問題的話也會提示。非常方便。
多說無益,請直接打開電腦跟著我操作。
五分鐘教程——配置篇:
Step1 注冊
打開官網https://rollbar.com/ 直接注冊一個賬號。也可以使用你的Github賬號直接登錄。
Step2 新建項目
注冊完成后直接回跳轉到新建項目頁面,如下圖:
記住選中Rails,然后再輸入框內輸入項目名稱,再點擊'continue'。就會進入使用介紹頁面,如下圖:
這一步我們可以把生成的Server-side access token(上圖紅框處)復制下來備用。
提示:這個網頁暫時不要關閉。
Step3 在項目中添加gem 'rollbar'
這時候切換到本地的專案,用atom打開gemfile,添加gem 'rollbar'
到group :development, :test do
之前。
保存Gemfile,然后在iterm中執行bundle install
。
Step4 配置
順次在iterm中執行下面的代碼:
rails generate rollbar 剛剛復制的access token
heroku config:add ROLLBAR_ACCESS_TOKEN=剛剛復制的access token
rake rollbar:test
執行完成后,你的注冊郵箱應該會收到一封電子郵件,就是最后一句代碼發出測試的反饋信息。
Step5 完成配置
上一步完成之后,我們再回到Rollbar剛剛的網頁。點擊底部碩大的按鈕,下圖紅框處:
然后就會進入控制面板,里面可以顯示heroku的錯誤:
好,到這一步,配置就完成了,以后就能愉快的使用了。下面我們來展示一下到底怎么用。
五分鐘教程——使用篇:
那安裝好了,怎么用呢?其實不用做額外的操作,一旦本地或者heroku上發生錯誤,Rollbar會自動給你發郵件提示。然后根據具體的錯誤信息debug就行了。
為了演示這個效果,我直接把我的項目的首頁的index.html.erb給刪了。來看看Rollbar會怎么給我提示。
Rollbar雖然主要用來在heroku上debug,但是在development環境下出現的錯誤也是會提示的。我們下面就分成兩部分來看:
本地錯誤提示
剛剛人為設置好沒有首頁的錯誤之后,開rails s,地址欄輸入localhosts:3000,直接會報錯如下:
同時Rollbar會給我發一封郵件,也是一樣的錯誤
點開上圖鏈接后會進入詳情界面,如下圖,上面的紅框提示開發環境是development,下面的紅框是詳細的報錯信息。
是不是和本地debug報錯信息一樣的豐富?但是你會說,這不是多此一舉么?本地本來就有報錯信息啊?是的,如果只是在本地的話,確實沒必要使用為的工具。但Rollbar的真正作用是在heroku上面遇到錯誤也會給詳細提示,咱們接著看。
Heroku錯誤提示
本地雖然出錯了,但是我不管不顧還是push到heroku上面了,然后打開heroku項目網址一看,什么情況?怎么不提示錯誤呢?而且首頁怎么加載的這么慢?十幾秒過去了,還是一片空白。
這時候,我的手機“叮”了一聲,一看是郵箱收到Rollbar的錯誤提示郵件了。頓時熱淚盈眶有沒有!
我們來看看錯誤詳情,這次注意紅框處變成了production,也就是生產環境。報錯信息也非常的豐富,和本地相比幾乎沒差別。是不是很完美!
總結
避免Heroku上出現bug的最好的思路應該是這樣:
首先,保證在本地測試的時候一定要完整無bug。
其次,如果本地一切正常,Heroku還是有bug的話,再請Rollbar出馬。
附件:
在寫該文時用到的16格筆記和思維導圖。
關于16格比較,你可以參考這篇文章:神奇的三30分鐘讀書法