reimplement const-lookup from Faraday::RackBuilder::Handler

This commit is contained in:
rick olson 2019-03-05 11:37:42 -07:00
parent 04b90eb43e
commit e8382421aa

View File

@ -0,0 +1,38 @@
# frozen_string_literal: true
require 'monitor'
module Faraday
# AdapterRegistry registers adapter class names so they can be looked up by a
# String or Symbol name.
class AdapterRegistry
def initialize
@lock = Monitor.new
@constants = nil
end
def get(name)
klass = @constants && @constants[name]
return klass if klass
klass =
if name.respond_to?(:constantize)
name.constantize
else
Object.const_get(name)
end
set(klass, name)
klass
end
def set(klass, name = nil)
name ||= klass.to_s
@lock.synchronize do
@constants ||= {}
@constants[name] = klass
end
end
end
end