class Railjet::Repository::Registry

Attributes

initialized_repositories[R]
repositories[R]

Public Class Methods

new() click to toggle source
# File lib/railjet/repository/registry.rb, line 7
def initialize
  @repositories             = {}
  @initialized_repositories = {}
end

Public Instance Methods

new(**kwargs) click to toggle source
# File lib/railjet/repository/registry.rb, line 17
def new(**kwargs)
  self.clone.tap do |registry|
    unless kwargs.blank?
      clone_module = Module.new.tap { |m| registry.extend(m) }

      kwargs.each do |name, val|
        clone_module.send(:define_method, name) { val }
      end
    end
  end
end
register(name, repository, **kwargs) click to toggle source
# File lib/railjet/repository/registry.rb, line 12
def register(name, repository, **kwargs)
  add_to_registry(name, repository, **kwargs)
  define_accessor(name)
end

Private Instance Methods

add_to_registry(name, repository, **kwargs) click to toggle source
# File lib/railjet/repository/registry.rb, line 52
def add_to_registry(name, repository, **kwargs)
  initialized_repositories[name] = nil
  repositories[name]             = RegisteredRepository.new(repository, **kwargs)       
end
define_accessor(name) click to toggle source
# File lib/railjet/repository/registry.rb, line 65
def define_accessor(name)
  pluralized_name = name.to_s.pluralize
  registry_module.send(:define_method, pluralized_name) { initialize_repo(name) }
end
get_from_registry(name) click to toggle source
# File lib/railjet/repository/registry.rb, line 57
def get_from_registry(name)
  repositories[name]
end
initialize_copy(original) click to toggle source
Calls superclass method
# File lib/railjet/repository/registry.rb, line 44
def initialize_copy(original)
  super
  
  @initialized_repositories = original.initialized_repositories.dup
  @repositories             = original.repositories.dup
  @registry_module          = nil
end
initialize_repo(name) click to toggle source
# File lib/railjet/repository/registry.rb, line 61
def initialize_repo(name)
  initialized_repositories[name] ||= get_from_registry(name).initialize_repo(self)
end
registry_module() click to toggle source
# File lib/railjet/repository/registry.rb, line 70
def registry_module
  @registry_module ||= Module.new.tap { |m| self.class.include(m) }
end