Module: Houston::Adapters

Defined in:
lib/houston/adapters.rb

Class Method Summary collapse

Class Method Details

.define_adapter_namespace(name) ⇒ Object



13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# File 'lib/houston/adapters.rb', line 13

def define_adapter_namespace(name)
  namespace = ::Module.new
  const_set name, namespace

  pathname = name_to_path(name)
  adapters_paths = File.join(File.dirname(caller[0]), "#{pathname}/*_adapter.rb")
  Dir[adapters_paths].each(&method(:require))

  def namespace.adapters
    constants
      .select { |sym| sym =~ /Adapter$/ }
      .map { |sym| sym[/^.*(?=Adapter)/] }
      .sort_by { |name| name == "None" ? "" : name }
  end

  def namespace.adapter(name)
    const_get "#{name}Adapter"
  end

  def namespace.adapter?(name)
    adapters.map(&:downcase).member?(name.to_s.downcase)
  end
end

.eachObject



5
6
7
8
9
# File 'lib/houston/adapters.rb', line 5

def each
  constants.each do |name|
    yield name, name_to_path(name)
  end
end