Module: Vedeu::Repositories::Registerable::ClassMethods

Defined in:
lib/vedeu/repositories/registerable.rb

Overview

These class methods are mixed into the repository.

Instance Method Summary collapse

Instance Method Details

#null(klass) ⇒ Symbol

The null model is used when the repository cannot be found.

Parameters:

  • klass (Class)

Returns:

  • (Symbol)


17
18
19
# File 'lib/vedeu/repositories/registerable.rb', line 17

def null(klass)
  define_method(:null_model) { klass }
end

#real(klass) ⇒ Symbol

The real model is the usual model to use for a given repository.

Parameters:

  • klass (Class)

Returns:

  • (Symbol)


26
27
28
# File 'lib/vedeu/repositories/registerable.rb', line 26

def real(klass)
  define_method(:model) { instance_variable_set('@model', klass) }
end

#register(model = nil, storage = {}) ⇒ Vedeu::Repositories::Repository

Register a repository for storing models.

Parameters:

  • model (Class) (defaults to: nil)
  • storage (Class|Hash) (defaults to: {})

Returns:



35
36
37
38
39
# File 'lib/vedeu/repositories/registerable.rb', line 35

def register(model = nil, storage = {})
  new(model, storage).tap do |klass|
    Vedeu::Repositories.register(klass.repository)
  end
end

#repositoryvoid

Note:

If the repository is ‘Geometries’, for example, then @models will be either an empty Geometries repository or the collection of stored models.

This method returns an undefined value.

Returns the repositories registered.



49
50
51
# File 'lib/vedeu/repositories/registerable.rb', line 49

def repository
  @models ||= reset!
end

#reset!void Also known as: reset

This method returns an undefined value.

Remove all stored models from the repository.



56
57
58
# File 'lib/vedeu/repositories/registerable.rb', line 56

def reset!
  @models = register
end