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
- .all ⇒ Object
- .each(&block) ⇒ Object
- .find(slug) ⇒ Object
- .model_classes ⇒ Object
- .register(model_class, slug:) ⇒ Object
- .slugs ⇒ Object
Class Method Details
.all ⇒ Object
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_classes ⇒ Object
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 |
.slugs ⇒ Object
29 30 31 |
# File 'lib/fosm/registry.rb', line 29 def slugs @registered.keys end |