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