module Railjet::Repository

Attributes

registry[R]

Public Class Methods

new(registry, **kwargs) click to toggle source
# File lib/railjet/repository.rb, line 6
def initialize(registry, **kwargs)
  @registry = registry
  initialize_specific_repositories(**kwargs)
end

Private Instance Methods

initialize_repository(repository, **kwargs) click to toggle source
# File lib/railjet/repository.rb, line 31
def initialize_repository(repository, **kwargs)
  ivar = "@#{repository.type}"
  dao  = kwargs[repository.type]

  instance_variable_set(ivar, repository.new(registry, :"#{repository.type}" => dao))
  self.class.send :attr_reader, repository.type
end
initialize_specific_repositories(**kwargs) click to toggle source
# File lib/railjet/repository.rb, line 23
def initialize_specific_repositories(**kwargs)
  repositories.each do |repo|
    initialize_repository(repo, **kwargs)
  end
end
repositories() click to toggle source
# File lib/railjet/repository.rb, line 13
def repositories
  klass         = self.class
  inner_klasses = klass.constants
  inner_repos   = inner_klasses.select { |k| k.to_s.end_with?("Repository") }
  
  inner_repos.map do |k|
    klass.const_get(k)
  end
end