From 116df09c3e4a57a6b0a57a5134c451687113ece1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Valim?= Date: Wed, 13 Jan 2010 22:59:27 +0100 Subject: Add notifications to ActiveResource. --- activeresource/lib/active_resource/connection.rb | 13 ++++--------- activeresource/lib/active_resource/railtie.rb | 11 ++++++++++- activeresource/lib/active_resource/railties/subscriber.rb | 15 +++++++++++++++ 3 files changed, 29 insertions(+), 10 deletions(-) create mode 100644 activeresource/lib/active_resource/railties/subscriber.rb (limited to 'activeresource/lib') diff --git a/activeresource/lib/active_resource/connection.rb b/activeresource/lib/active_resource/connection.rb index 193be89a82..ee700700ae 100644 --- a/activeresource/lib/active_resource/connection.rb +++ b/activeresource/lib/active_resource/connection.rb @@ -103,14 +103,13 @@ module ActiveResource with_auth { request(:head, path, build_request_headers(headers, :head, self.site.merge(path))) } end - private # Makes a request to the remote service. def request(method, path, *arguments) - logger.info "#{method.to_s.upcase} #{site.scheme}://#{site.host}:#{site.port}#{path}" if logger - result = nil - ms = Benchmark.ms { result = http.send(method, path, *arguments) } - logger.info "--> %d %s (%d %.0fms)" % [result.code, result.message, result.body ? result.body.length : 0, ms] if logger + result = ActiveSupport::Notifications.instrument!("active_resource.request", + :method => method, :path => path, :site => site) do + http.send(method, path, *arguments) + end handle_response(result) rescue Timeout::Error => e raise TimeoutError.new(e.message) @@ -274,10 +273,6 @@ module ActiveResource {HTTP_FORMAT_HEADER_NAMES[http_method] => format.mime_type} end - def logger #:nodoc: - Base.logger - end - def legitimize_auth_type(auth_type) return :basic if auth_type.nil? auth_type = auth_type.to_sym diff --git a/activeresource/lib/active_resource/railtie.rb b/activeresource/lib/active_resource/railtie.rb index 4f264c82b8..1b9307d472 100644 --- a/activeresource/lib/active_resource/railtie.rb +++ b/activeresource/lib/active_resource/railtie.rb @@ -1,2 +1,11 @@ require "active_resource" -require "rails" \ No newline at end of file +require "rails" + +module ActiveResource + class Railtie < Rails::Railtie + plugin_name :active_resource + + require "active_resource/railties/subscriber" + subscriber ActiveResource::Railties::Subscriber.new + end +end \ No newline at end of file diff --git a/activeresource/lib/active_resource/railties/subscriber.rb b/activeresource/lib/active_resource/railties/subscriber.rb new file mode 100644 index 0000000000..42c108d702 --- /dev/null +++ b/activeresource/lib/active_resource/railties/subscriber.rb @@ -0,0 +1,15 @@ +module ActiveResource + module Railties + class Subscriber < Rails::Subscriber + def request(event) + result, site = event.payload[:result], event.payload[:site] + info "#{event.payload[:method].to_s.upcase} #{site.scheme}://#{site.host}:#{site.port}#{event.payload[:path]}" + info "--> %d %s %d (%.1fms)" % [result.code, result.message, result.body.to_s.length, event.duration] + end + + def logger + ActiveResource::Base.logger + end + end + end +end \ No newline at end of file -- cgit v1.2.3 From 7f4d8e3fbd704cf1005a46309e3795192b114013 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Valim?= Date: Fri, 15 Jan 2010 11:01:37 +0100 Subject: Yield the payload notifications for further modification (like adding the result). --- activeresource/lib/active_resource/connection.rb | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'activeresource/lib') diff --git a/activeresource/lib/active_resource/connection.rb b/activeresource/lib/active_resource/connection.rb index ee700700ae..d06543d700 100644 --- a/activeresource/lib/active_resource/connection.rb +++ b/activeresource/lib/active_resource/connection.rb @@ -106,9 +106,9 @@ module ActiveResource private # Makes a request to the remote service. def request(method, path, *arguments) - result = ActiveSupport::Notifications.instrument!("active_resource.request", - :method => method, :path => path, :site => site) do - http.send(method, path, *arguments) + result = ActiveSupport::Notifications.instrument("active_resource.request", + :method => method, :path => path, :site => site) do |payload| + payload[:result] = http.send(method, path, *arguments) end handle_response(result) rescue Timeout::Error => e -- cgit v1.2.3 From e5a2a9fced3e5559ac139977922a0f63a53c6c5c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Valim?= Date: Fri, 15 Jan 2010 14:45:18 +0100 Subject: Remove URI object from ActiveResource notification, send the :mailer class in AM (like in AP#process_action) and remove locale instrumentation. --- activeresource/lib/active_resource/connection.rb | 7 ++++--- activeresource/lib/active_resource/railties/subscriber.rb | 4 ++-- 2 files changed, 6 insertions(+), 5 deletions(-) (limited to 'activeresource/lib') diff --git a/activeresource/lib/active_resource/connection.rb b/activeresource/lib/active_resource/connection.rb index d06543d700..2f0ccd7dae 100644 --- a/activeresource/lib/active_resource/connection.rb +++ b/activeresource/lib/active_resource/connection.rb @@ -106,9 +106,10 @@ module ActiveResource private # Makes a request to the remote service. def request(method, path, *arguments) - result = ActiveSupport::Notifications.instrument("active_resource.request", - :method => method, :path => path, :site => site) do |payload| - payload[:result] = http.send(method, path, *arguments) + result = ActiveSupport::Notifications.instrument("active_resource.request") do |payload| + payload[:method] = method + payload[:request_uri] = "#{site.scheme}://#{site.host}:#{site.port}#{path}" + payload[:result] = http.send(method, path, *arguments) end handle_response(result) rescue Timeout::Error => e diff --git a/activeresource/lib/active_resource/railties/subscriber.rb b/activeresource/lib/active_resource/railties/subscriber.rb index 42c108d702..fb98061b71 100644 --- a/activeresource/lib/active_resource/railties/subscriber.rb +++ b/activeresource/lib/active_resource/railties/subscriber.rb @@ -2,8 +2,8 @@ module ActiveResource module Railties class Subscriber < Rails::Subscriber def request(event) - result, site = event.payload[:result], event.payload[:site] - info "#{event.payload[:method].to_s.upcase} #{site.scheme}://#{site.host}:#{site.port}#{event.payload[:path]}" + result = event.payload[:result] + info "#{event.payload[:method].to_s.upcase} #{event.payload[:request_uri]}" info "--> %d %s %d (%.1fms)" % [result.code, result.message, result.body.to_s.length, event.duration] end -- cgit v1.2.3