38 lines
757 B
Ruby
38 lines
757 B
Ruby
|
module Faraday
|
||
|
class Middleware
|
||
|
extend MiddlewareRegistry
|
||
|
|
||
|
class << self
|
||
|
attr_accessor :load_error
|
||
|
private :load_error=
|
||
|
end
|
||
|
|
||
|
self.load_error = nil
|
||
|
|
||
|
# Executes a block which should try to require and reference dependent libraries
|
||
|
def self.dependency(lib = nil)
|
||
|
lib ? require(lib) : yield
|
||
|
rescue LoadError, NameError => error
|
||
|
self.load_error = error
|
||
|
end
|
||
|
|
||
|
def self.new(*)
|
||
|
raise "missing dependency for #{self}: #{load_error.message}" unless loaded?
|
||
|
super
|
||
|
end
|
||
|
|
||
|
def self.loaded?
|
||
|
load_error.nil?
|
||
|
end
|
||
|
|
||
|
def self.inherited(subclass)
|
||
|
super
|
||
|
subclass.send(:load_error=, self.load_error)
|
||
|
end
|
||
|
|
||
|
def initialize(app = nil)
|
||
|
@app = app
|
||
|
end
|
||
|
end
|
||
|
end
|