ruby-on-rails – 如何在中间件中设置current_user?

为了提供更多我的问题的背景知识,请参阅这个 Github问题 – https://github.com/getsentry/raven-ruby/issues/144

我正在使用raven这是一个错误记录器.如果用户登录,我想为current_user添加id.我收到的答案是

This should be done via your middleware or somewhere similar.

这意味着在Raven中设置current_user.

我读过关于中间件的内容,但仍然无法弄清楚如何将current_user放在一个中.

解决方法

对于Rails应用程序,我已成功在ApplicationController中的before_action中设置Raven(Sentry)上下文:
# application_controller.rb
class ApplicationController < ActionController::Base
  before_action :set_raven_context

  def set_raven_context
    # I use subdomains in my app,but you Could leave this next line out if it's not relevant
    context = { account: request.subdomain }
    context.merge!({ user_id: current_user.id,email: current_user.email }) unless current_user.blank?
    Raven.user_context(context)
  end
end

这是有效的,因为乌鸦Rack中间件会在每次请求后清除上下文. See here.但是,它可能不是最有效的,因为即使在大多数不会导致异常的情况下,您也在设置上下文.但无论如何,它并不是那么昂贵的操作,并且它会让你相当远,而不是真的需要乱用注入新的Rack中间件或任何东西.

相关文章

validates:conclusion,:presence=>true,:inclusion=>{...
一、redis集群搭建redis3.0以前,提供了Sentinel工具来监控各...
分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣...
上一篇博文 ruby传参之引用类型 里边定义了一个方法名 mo...
一编程与编程语言 什么是编程语言? 能够被计算机所识别的表...
Ruby类和对象Ruby是一种完美的面向对象编程语言。面向对象编...