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

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>

Returns:

  • (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).

Returns:

  • (Array<Class>)

    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

Returns:

  • (Boolean)


20
21
22
# File 'lib/cold_storage/registry.rb', line 20

def registered?(model)
  MUTEX.synchronize { names.include?(model.to_s) }
end