1

我有一个 Rails 应用程序可以很好地发送 Airbrake 通知,但我想在通知中添加一些用户信息。

我正在使用airbrake gem v5.7.1,它添加了一个中间件来捕获未捕获的异常并在重新引发之前报告它们。

我尝试按照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 UI 中的参数只有动作和控制器信息。

4

2 回答 2

1

这是 Airbrake gem 中的一个错误,已在Airbrake 5.8.0中修复并发布。

于 2017-06-20T14:00:30.987 回答
0

我不确定为什么这些信息没有显示在仪表板中,它应该显示在参数中就好了。

notice[:context][:user]Airbrake gem根据https://airbrake.io/docs/api/#create-notice-v3将用户信息设置为。您可以尝试在那里设置该信息。

或者,如果您可以定义一个current_user携带用户对象的方法,那么库可以猜测您尝试为您检索的值。

def current_user
  @current_user ||= User.find(user_id)
end
于 2017-02-28T14:05:09.467 回答