2017-02-28 49 views
0

我有一個Rails應用程序發送Airbrake通知很好,但我想添加一些用戶信息的通知。如何將用戶信息添加到Airbrake通知?

我正在使用airbrake gem,v5.7.1,它添加middleware來捕獲未捕獲的異常並在再次升級之前報告它們。

我試過了,按照該README,添加一個過濾器,以一個初始化:

class UserDetailsFilter 
    def call(notice) 
    if notice.stash.has_key?(:rack_request) 
     user_credentials = notice.stash[:rack_request].cookies["user_credentials"]   
     unless user_credentials.blank? 
     user_id = user_credentials.split(':').last 
     user = User.find(user_id) 
     notice[:params][:user_email] = user.email 
     notice[:params][:user_name] = "#{user.first_name} #{user.last_name}" 
     end 
    end 
    end 
end 

Airbrake.add_filter(UserDetailsFilter.new) 

使用binding.pry我可以證實,該代碼運行,併發出通知確實有:params哈希修改。然而,Airbrake用戶界面中的參數僅包含操作和控制器信息。

回答

0

我不確定爲什麼這些信息沒有顯示在儀表板中,它應該顯示在params中就好了。

Airbrake gem根據https://airbrake.io/docs/api/#create-notice-v3將用戶信息設置爲notice[:context][:user]。你可以嘗試在那裏設置信息。

或者,如果您可以定義攜帶用戶對象的current_user方法,那麼庫可以猜測您嘗試爲您檢索的值。

def current_user 
    @current_user ||= User.find(user_id) 
end 
+0

我在我的控制器中有一個'current_user'方法。您是否建議我在通知中獲取用戶信息,而無需添加過濾器? – Kris

+0

是的,我期望會發生。你可以發送Airbrake支持的消息嗎?我想檢查你的項目。 – kyrylo

+0

你在Airbrake工作嗎? – Kris

相關問題