要为我的问题提供更多背景信息,请参阅此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/