From 1b9bb1270ecc2489a7ddf96755c1e92e848a7e80 Mon Sep 17 00:00:00 2001 From: Michael Hewson Date: Wed, 20 Jul 2016 04:54:31 -0400 Subject: [PATCH 1/2] use a custom subclass of ActiveResource::Connection if possible --- lib/active_resource/connection_ext.rb | 30 ++++-------------------- lib/shopify_api.rb | 9 +++++++- lib/shopify_api/connection.rb | 33 +++++++++++++++++++++++++++ 3 files changed, 45 insertions(+), 27 deletions(-) create mode 100644 lib/shopify_api/connection.rb diff --git a/lib/active_resource/connection_ext.rb b/lib/active_resource/connection_ext.rb index 67253af5b..22a8b8ba3 100644 --- a/lib/active_resource/connection_ext.rb +++ b/lib/active_resource/connection_ext.rb @@ -1,32 +1,10 @@ +require 'shopify_api/connection' + module ActiveResource class Connection attr_reader :response - module ResponseCapture - def handle_response(response) - @response = super - end - end - - module RequestNotification - def request(method, path, *arguments) - super.tap do |response| - notify_about_request(response, arguments) - end - rescue => e - notify_about_request(e.response, arguments) if e.respond_to?(:response) - raise - end - - def notify_about_request(response, arguments) - ActiveSupport::Notifications.instrument("request.active_resource_detailed") do |payload| - payload[:response] = response - payload[:data] = arguments - end - end - end - - prepend ResponseCapture - prepend RequestNotification + prepend ShopifyAPI::Connection::ResponseCapture + prepend ShopifyAPI::Connection::RequestNotification end end diff --git a/lib/shopify_api.rb b/lib/shopify_api.rb index 90da6bdcc..7c866dd42 100644 --- a/lib/shopify_api.rb +++ b/lib/shopify_api.rb @@ -4,7 +4,6 @@ require 'active_support/core_ext/class/attribute_accessors' require 'digest/md5' require 'base64' -require 'active_resource/connection_ext' require 'active_resource/detailed_log_subscriber' require 'shopify_api/limits' require 'shopify_api/json_format' @@ -22,3 +21,11 @@ module ShopifyAPI require 'shopify_api/countable' require 'shopify_api/resources' require 'shopify_api/session' +require 'shopify_api/connection' + +# ActiveResource::Base.connection_class was introduced in https://github.com/rails/activeresource/pull/222 +if ShopifyAPI::Base.respond_to?(:connection_class) + ShopifyAPI::Base.connection_class = ShopifyAPI::Connection +else + require 'active_resource/connection_ext' +end diff --git a/lib/shopify_api/connection.rb b/lib/shopify_api/connection.rb new file mode 100644 index 000000000..764ae886d --- /dev/null +++ b/lib/shopify_api/connection.rb @@ -0,0 +1,33 @@ +module ShopifyAPI + class Connection < ActiveResource::Connection + attr_reader :response + + module ResponseCapture + def handle_response(response) + @response = super + end + end + + include ResponseCapture + + module RequestNotification + def request(method, path, *arguments) + super.tap do |response| + notify_about_request(response, arguments) + end + rescue => e + notify_about_request(e.response, arguments) if e.respond_to?(:response) + raise + end + + def notify_about_request(response, arguments) + ActiveSupport::Notifications.instrument("request.active_resource_detailed") do |payload| + payload[:response] = response + payload[:data] = arguments + end + end + end + + include RequestNotification + end +end From 83c4d9c1b86d465cba164547113aa89ba07c680c Mon Sep 17 00:00:00 2001 From: Michael Hewson Date: Thu, 21 Jul 2016 08:39:38 -0400 Subject: [PATCH 2/2] remove comment about pull request --- lib/shopify_api.rb | 1 - 1 file changed, 1 deletion(-) diff --git a/lib/shopify_api.rb b/lib/shopify_api.rb index 7c866dd42..801c5b1ac 100644 --- a/lib/shopify_api.rb +++ b/lib/shopify_api.rb @@ -23,7 +23,6 @@ module ShopifyAPI require 'shopify_api/session' require 'shopify_api/connection' -# ActiveResource::Base.connection_class was introduced in https://github.com/rails/activeresource/pull/222 if ShopifyAPI::Base.respond_to?(:connection_class) ShopifyAPI::Base.connection_class = ShopifyAPI::Connection else