Sha256: c45cfaa09b86d11c0173b3888448c7f35781553751c7c8d4a9ee8d82b2c4dd2e

Contents?: true

Size: 555 Bytes

Versions: 9

Compression:

Stored size: 555 Bytes

Contents

require 'saorin/error'

module Saorin
  module Registerable
    class << self
      def included(base)
        base.extend ClassMethods
      end
    end

    module ClassMethods
      attr_accessor :load_path

      def adapters
        @adapters ||= {}
      end

      def register(key, adapter)
        adapters[key.to_s] = adapter
      end

      def guess(key)
        key = key.to_s
        require "#{load_path}/#{key}"
        adapter = adapters[key]
        raise AdapterNotFound, key unless adapter
        adapter
      end
    end
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
saorin-0.6.2 lib/saorin/registerable.rb
saorin-0.6.1 lib/saorin/registerable.rb
saorin-0.6.0 lib/saorin/registerable.rb
saorin-0.5.0 lib/saorin/registerable.rb
saorin-0.4.1 lib/saorin/registerable.rb
saorin-0.4.0 lib/saorin/registerable.rb
saorin-0.3.2 lib/saorin/registerable.rb
saorin-0.3.1 lib/saorin/registerable.rb
saorin-0.3.0 lib/saorin/registerable.rb