diff --git a/lib/faraday/adapter.rb b/lib/faraday/adapter.rb index 7bd6bcea0..c9147f0f9 100644 --- a/lib/faraday/adapter.rb +++ b/lib/faraday/adapter.rb @@ -34,6 +34,7 @@ def supports_parallel? def inherited(subclass) super + subclass.init_mutex subclass.supports_parallel = supports_parallel? end end diff --git a/lib/faraday/middleware.rb b/lib/faraday/middleware.rb index 5bbe4a0e1..6400bc913 100644 --- a/lib/faraday/middleware.rb +++ b/lib/faraday/middleware.rb @@ -17,5 +17,11 @@ def close warn "#{@app} does not implement \#close!" end end + + def self.inherited(subclass) + super + subclass.send(:load_error=, load_error) # DependencyLoader.inherited + subclass.init_mutex + end end end diff --git a/lib/faraday/middleware_registry.rb b/lib/faraday/middleware_registry.rb index 021038fec..5fefaffd5 100644 --- a/lib/faraday/middleware_registry.rb +++ b/lib/faraday/middleware_registry.rb @@ -6,6 +6,11 @@ module Faraday # Adds the ability for other modules to register and lookup # middleware classes. module MiddlewareRegistry + def self.extended(klass) + super + klass.init_mutex + end + # Register middleware class(es) on the current module. # # @param autoload_path [String] Middleware autoload path @@ -91,8 +96,12 @@ def lookup_middleware(key) raise(Faraday::Error, "#{key.inspect} is not registered on #{self}") end + def init_mutex + @middleware_mutex = Monitor.new + end + def middleware_mutex(&block) - @middleware_mutex ||= Monitor.new + puts "#{self}: middleware_mutex" if @middleware_mutex.nil? @middleware_mutex.synchronize(&block) end