【问题标题】:How to add user information to Airbrake notifications?如何将用户信息添加到 Airbrake 通知?
【发布时间】:2017-02-28 12:53:12
【问题描述】:

我有一个 Rails 应用程序可以正常发送 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 UI 中的参数只有动作和控制器信息。

【问题讨论】:

    标签: ruby-on-rails airbrake


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      我不完全确定为什么此信息没有显示在仪表板中,它应该显示在 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
      

      【讨论】:

      • 我的控制器中已经有一个current_user 方法。您是否建议我无需添加过滤器即可在通知中获取用户信息?
      • 是的,我希望这会发生。您可以向 Airbrake 支持人员发送消息吗?我想看看你的项目。
      • 我知道,对不起,我应该澄清一下。
      • 通过 ApplicationController#current_user 自动包含用户详细信息无法正常工作,因为 airbrake gem 中存在“错误”,现已在 master 分支上修复:github.com/airbrake/airbrake/pull/684
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-11
      • 2021-03-06
      • 2022-01-19
      • 1970-01-01
      • 2020-04-03
      • 1970-01-01
      相关资源
      最近更新 更多