]> git.donarmstrong.com Git - dsa-puppet.git/blobdiff - 3rdparty/modules/aviator/feature/faraday/middleware.rb
try again, with puppetforge modules, correctly included now
[dsa-puppet.git] / 3rdparty / modules / aviator / feature / faraday / middleware.rb
diff --git a/3rdparty/modules/aviator/feature/faraday/middleware.rb b/3rdparty/modules/aviator/feature/faraday/middleware.rb
new file mode 100644 (file)
index 0000000..c45d51a
--- /dev/null
@@ -0,0 +1,37 @@
+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