8

私の質問の背景を詳しく説明するには、この Github の問題を参照してください - https://github.com/getsentry/raven-ruby/issues/144

ravenエラーロガーを使用しています。ユーザーがログインしている場合のIDを追加したいcurrent_user。私が受け取った答えは

これは、ミドルウェアまたは同様の場所を介して行う必要があります。

これは、Raven で current_user を設定することを意味します。

ミドルウェアについて読んだことがありますが、どうすればミドルウェアに入ることができるのかまだわかりませんcurrent_user

4

2 に答える 2

17

Rails アプリの場合、Raven (Sentry) コンテキストをbefore_actioninsideに設定するだけで成功しましたApplicationController

# 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 ミドルウェアがリクエストごとにコンテキストをクリアするために機能します。こちらをご覧ください。ただし、例外にならない大部分のケースでもコンテキストを設定しているため、最も効率的ではない場合があります。しかし、いずれにせよ、それはそれほど高価な操作ではなく、新しいRackミドルウェアなどを注入することを本当にいじる必要もなく、かなり遠くまで行くことができます.

于 2014-05-14T18:12:40.873 に答える