Module: ColdStorage::Registry
- Defined in:
- lib/cold_storage/registry.rb
Overview
Keeps track of the models that called archivable.
Model names are stored as strings, never as class objects, so that code reloading in development does not pin stale constants.
Class Method Summary collapse
- .clear! ⇒ Object
- .model_names(eager_load: true) ⇒ Array<String>
-
.models(eager_load: true) ⇒ Array<Class>
The archivable models, skipping names that no longer resolve (removed or renamed classes).
- .register(model) ⇒ Object
- .registered?(model) ⇒ Boolean
Class Method Details
.clear! ⇒ Object
39 40 41 |
# File 'lib/cold_storage/registry.rb', line 39 def clear! MUTEX.synchronize { @names = Set.new } end |
.model_names(eager_load: true) ⇒ Array<String>
25 26 27 28 |
# File 'lib/cold_storage/registry.rb', line 25 def model_names(eager_load: true) load_application! if eager_load MUTEX.synchronize { names.to_a }.sort end |
.models(eager_load: true) ⇒ Array<Class>
Returns the archivable models, skipping names that no longer resolve (removed or renamed classes).
32 33 34 35 36 37 |
# File 'lib/cold_storage/registry.rb', line 32 def models(eager_load: true) model_names(eager_load: eager_load).filter_map do |name| klass = name.safe_constantize klass if klass.respond_to?(:archivable?) && klass.archivable? end end |
.register(model) ⇒ Object
15 16 17 18 |
# File 'lib/cold_storage/registry.rb', line 15 def register(model) MUTEX.synchronize { names << model.name } if model.name model end |
.registered?(model) ⇒ Boolean
20 21 22 |
# File 'lib/cold_storage/registry.rb', line 20 def registered?(model) MUTEX.synchronize { names.include?(model.to_s) } end |