Доступ к статусу ответа после его отправки - PullRequest
0 голосов
/ 12 мая 2018

Я работаю над функцией сохранения запросов, сделанных для определенных конечных точек, в моем приложении.

after_action :record_user_activity
def record_user_activity
  return unless current_user
  return if request.url =~ /assets|packs/
  @session.navigation.create!(
    uri: request.url,
    request_method: request.method,
    response_status: response.code.to_i,
    access_time: Time.now
  )
end

Проблема в том, что даже если мы получим ответ об ошибке, при получении response.code в этот момент (after_action), код ответа по-прежнему 2xx. Я предполагаю, что это, вероятно, потому что сервер еще не столкнулся с какой-либо проблемой, с которой он может столкнуться в процессе доступа к данным.

Как правильно сохранить код состояния, который на самом деле был отправлен пользователю?

1 Ответ

0 голосов
/ 12 мая 2018

В журналах рельсов уже хранятся запросы и ответы.Если вам просто нужно отслеживать все запросы пользователей, вы можете просто добавить идентификатор пользователя в свои журналы.Если нет особой причины хранить эти данные в БД, которая будет расти в геометрической прогрессии по мере увеличения активности пользователя, добавьте это либо к config/application.rb, либо к config/environments/production.rb

MyAppName::Application.configure do
  #...whatever you already have in configs
  # then add the following line
  config.log_tags = [
          -> request { "user-#{request.cookie_jar.signed[:user_id]}" }
      ]
end

. Затем вы можете привязать логии используйте grep, или напишите некоторые другие процессы для анализа журналов с другой аналитикой.Есть много инструментов, доступных для этого типа работы.Но вот базовый пример

tail -f logs/production.log | grep user-101 
# this would show all log requests from user with id 101

Если вам все же это нужно, вы можете вместо этого попробовать prepend_after_action, см.

http://api.rubyonrails.org/classes/AbstractController/Callbacks/ClassMethods.html#method-i-prepend_after_action

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...