Class: Perpetuity::MapperRegistry

Inherits:
Object
  • Object
show all
Includes:
Enumerable
Defined in:
lib/perpetuity/mapper_registry.rb

Instance Method Summary collapse

Constructor Details

#initializeMapperRegistry

Returns a new instance of MapperRegistry.



5
6
7
# File 'lib/perpetuity/mapper_registry.rb', line 5

def initialize
  @mappers = Hash.new
end

Instance Method Details

#[](klass) ⇒ Object



13
14
15
16
17
18
19
20
21
22
23
# File 'lib/perpetuity/mapper_registry.rb', line 13

def [] klass
  mapper_class = @mappers.fetch(klass) do
    load_mappers
    unless @mappers.has_key? klass
      raise KeyError, "No mapper for #{klass}"
    end
    @mappers[klass]
  end

  mapper_class.new(self)
end

#[]=(klass, mapper) ⇒ Object



25
26
27
# File 'lib/perpetuity/mapper_registry.rb', line 25

def []= klass, mapper
  @mappers[klass] = mapper
end

#check_rails_app_for_mappersObject



37
38
39
# File 'lib/perpetuity/mapper_registry.rb', line 37

def check_rails_app_for_mappers
  Dir['app/**/*_mapper.rb']
end

#each(&block) ⇒ Object



29
30
31
# File 'lib/perpetuity/mapper_registry.rb', line 29

def each &block
  @mappers.each(&block)
end

#has_mapper?(klass) ⇒ Boolean

Returns:

  • (Boolean)


9
10
11
# File 'lib/perpetuity/mapper_registry.rb', line 9

def has_mapper? klass
  @mappers.has_key? klass
end

#load_mappersObject



33
34
35
# File 'lib/perpetuity/mapper_registry.rb', line 33

def load_mappers
  check_rails_app_for_mappers.each(&method(:load))
end