Sha256: 845d388e9d26c1306bf59d0479310d4fb5440b1d8dfe6bf54e6f0eb0da23d518

Contents?: true

Size: 934 Bytes

Versions: 8

Compression:

Stored size: 934 Bytes

Contents

module Dandelion
  module Adapter
    class InvalidAdapterError < StandardError; end

    class MissingDependencyError < StandardError
      attr_reader :gems

      def initialize(gems)
        @gems = gems
      end
    end

    class Base
      class << self
        @@adapters = {}

        def adapter(name)
          @@adapters[name] = self
        end

        def create_adapter(name, options = {})
          klass = @@adapters[name]
          raise InvalidAdapterError if klass.nil?
          klass.new(options)
        rescue LoadError
          raise MissingDependencyError.new(klass.required_gems)
        end

        attr_reader :required_gems

        def requires_gems(*gems)
          @required_gems = gems
        end
      end

      def initialize(options)
      end
    end
  end
end

require 'dandelion/adapter/noop'
require 'dandelion/adapter/ftp'
require 'dandelion/adapter/sftp'
require 'dandelion/adapter/s3'

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
dandelion-0.4.6 lib/dandelion/adapter.rb
dandelion-0.4.5 lib/dandelion/adapter.rb
dandelion-0.4.4 lib/dandelion/adapter.rb
dandelion-0.4.3 lib/dandelion/adapter.rb
dandelion-0.4.2 lib/dandelion/adapter.rb
dandelion-0.4.1 lib/dandelion/adapter.rb
dandelion-0.4.0 lib/dandelion/adapter.rb
dandelion-0.4.0.beta2 lib/dandelion/adapter.rb