要为我的问题提供更多背景信息,请参阅此Github问题-https://github.com/getsentry/raven-ruby/issues/144

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



这意味着在Raven中设置current_user。

我已经阅读了有关中间件的信息,但仍然无法弄清楚如何将current_user集成到其中。

最佳答案

对于Rails应用程序,我已经成功地在before_action内的ApplicationController中设置了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

之所以有效,是因为raven Rack中间件在每次请求后都会清除上下文。 See here.可能不是最有效的,因为即使在大多数情况下也不会导致Exception的情况下,您还是要设置上下文。但是无论如何,这并没有那么昂贵,并且可以使您真正地摆脱注入(inject)新的Rack中间件或其他任何东西的麻烦。

关于ruby-on-rails - 如何在中间件中设置current_user?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20492687/

10-12 19:16