connection_ext.rb 957 B

12345678910111213141516171819202122232425262728293031
  1. require 'active_support/core_ext/module/aliasing'
  2. module ActiveResource
  3. class Connection
  4. attr_reader :response
  5. def handle_response_with_response_capture(response)
  6. @response = handle_response_without_response_capture(response)
  7. end
  8. def request_with_detailed_log_subscriber(method, path, *arguments)
  9. result = request_without_detailed_log_subscriber(method, path, *arguments)
  10. detailed_log_subscriber(result, arguments)
  11. result
  12. rescue => e
  13. detailed_log_subscriber(e.response, arguments) if e.respond_to?(:response)
  14. raise
  15. end
  16. def detailed_log_subscriber(response, arguments)
  17. ActiveSupport::Notifications.instrument("request.active_resource_detailed") do |payload|
  18. payload[:response] = response
  19. payload[:data] = arguments
  20. end
  21. end
  22. alias_method_chain :handle_response, :response_capture
  23. alias_method_chain :request, :detailed_log_subscriber
  24. end
  25. end