Module: Fosm::Registry

Defined in:
lib/fosm/registry.rb

Overview

Global registry of all FOSM app model classes. Models auto-register when they include Fosm::Lifecycle and call lifecycle { }.

Class Method Summary collapse

Class Method Details

.allObject



17
18
19
# File 'lib/fosm/registry.rb', line 17

def all
  @registered
end

.each(&block) ⇒ Object



33
34
35
# File 'lib/fosm/registry.rb', line 33

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

.find(slug) ⇒ Object



21
22
23
# File 'lib/fosm/registry.rb', line 21

def find(slug)
  @registered[slug]
end

.model_classesObject



25
26
27
# File 'lib/fosm/registry.rb', line 25

def model_classes
  @registered.values
end

.register(model_class, slug:) ⇒ Object



8
9
10
11
12
13
14
15
# File 'lib/fosm/registry.rb', line 8

def register(model_class, slug:)
  unless slug.match?(/\A[a-z0-9_]+\z/)
    raise ArgumentError, "FOSM slug must contain only lowercase letters, digits, and underscores " \
                         "(got: #{slug.inspect} for #{model_class.name}). " \
                         "Hyphens are not allowed because slugs are used to construct Ruby route helper names."
  end
  @registered[slug] = model_class
end

.slugsObject



29
30
31
# File 'lib/fosm/registry.rb', line 29

def slugs
  @registered.keys
end