diff options
author | Pratik Naik <pratiknaik@gmail.com> | 2010-01-17 03:20:30 +0530 |
---|---|---|
committer | Pratik Naik <pratiknaik@gmail.com> | 2010-01-17 03:20:30 +0530 |
commit | b04230e3bbf912d60601e9e7b797c4cd43581d51 (patch) | |
tree | 97a2f784a2ec2bfae4f960af56a9280dad6f7774 /activeresource | |
parent | 867829b187969607aa12f2b0457f25da9c204db0 (diff) | |
parent | 6e3bee6cf1f0d2684152292db0a8b757249824fd (diff) | |
download | rails-b04230e3bbf912d60601e9e7b797c4cd43581d51.tar.gz rails-b04230e3bbf912d60601e9e7b797c4cd43581d51.tar.bz2 rails-b04230e3bbf912d60601e9e7b797c4cd43581d51.zip |
Merge remote branch 'mainstream/master'
Conflicts:
actionpack/lib/action_controller/metal/flash.rb
Diffstat (limited to 'activeresource')
-rw-r--r-- | activeresource/lib/active_resource/connection.rb | 14 | ||||
-rw-r--r-- | activeresource/lib/active_resource/railtie.rb | 11 | ||||
-rw-r--r-- | activeresource/lib/active_resource/railties/subscriber.rb | 15 | ||||
-rw-r--r-- | activeresource/test/abstract_unit.rb | 2 | ||||
-rw-r--r-- | activeresource/test/cases/subscriber_test.rb | 39 |
5 files changed, 69 insertions, 12 deletions
diff --git a/activeresource/lib/active_resource/connection.rb b/activeresource/lib/active_resource/connection.rb index 193be89a82..2f0ccd7dae 100644 --- a/activeresource/lib/active_resource/connection.rb +++ b/activeresource/lib/active_resource/connection.rb @@ -103,14 +103,14 @@ 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") 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 raise TimeoutError.new(e.message) @@ -274,10 +274,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..fb98061b71 --- /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 = 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 + + def logger + ActiveResource::Base.logger + end + end + end +end
\ No newline at end of file diff --git a/activeresource/test/abstract_unit.rb b/activeresource/test/abstract_unit.rb index 5fa6d3023b..1e71d5d0dd 100644 --- a/activeresource/test/abstract_unit.rb +++ b/activeresource/test/abstract_unit.rb @@ -10,8 +10,6 @@ require 'rubygems' require 'test/unit' require 'active_resource' require 'active_support' -require 'active_support/test_case' -require 'active_model/test_case' $:.unshift "#{File.dirname(__FILE__)}/../test" require 'setter_trap' diff --git a/activeresource/test/cases/subscriber_test.rb b/activeresource/test/cases/subscriber_test.rb new file mode 100644 index 0000000000..7100b02872 --- /dev/null +++ b/activeresource/test/cases/subscriber_test.rb @@ -0,0 +1,39 @@ +require "abstract_unit" +require "fixtures/person" +require "rails/subscriber/test_helper" +require "active_resource/railties/subscriber" + +module SubscriberTest + Rails::Subscriber.add(:active_resource, ActiveResource::Railties::Subscriber.new) + + def setup + @matz = { :id => 1, :name => 'Matz' }.to_xml(:root => 'person') + ActiveResource::HttpMock.respond_to do |mock| + mock.get "/people/1.xml", {}, @matz + end + + super + end + + def set_logger(logger) + ActiveResource::Base.logger = logger + end + + def test_request_notification + matz = Person.find(1) + wait + assert_equal 2, @logger.logged(:info).size + assert_equal "GET http://somewhere.else:80/people/1.xml", @logger.logged(:info)[0] + assert_match /\-\-\> 200 200 106/, @logger.logged(:info)[1] + end + + class SyncSubscriberTest < ActiveSupport::TestCase + include Rails::Subscriber::SyncTestHelper + include SubscriberTest + end + + class AsyncSubscriberTest < ActiveSupport::TestCase + include Rails::Subscriber::AsyncTestHelper + include SubscriberTest + end +end
\ No newline at end of file |