class Realm::Builder

Public Class Methods

new(config) click to toggle source
# File lib/realm/builder.rb, line 9
def initialize(config)
  @config = config
end
setup(config) click to toggle source
# File lib/realm/builder.rb, line 5
def self.setup(config)
  new(config).setup
end

Public Instance Methods

runtime() click to toggle source
# File lib/realm/builder.rb, line 25
def runtime
  @container.resolve(Runtime)
end
setup() click to toggle source
# File lib/realm/builder.rb, line 13
def setup
  logger.info("Setting up #{cfg.root_module} realm")
  register_domain_resolver
  register_event_router
  register_runtime
  register_logger
  register_dependencies
  setup_plugins
  config_persistence
  self
end

Private Instance Methods

cfg() click to toggle source
# File lib/realm/builder.rb, line 71
def cfg
  @config
end
config_persistence() click to toggle source
# File lib/realm/builder.rb, line 59
def config_persistence
  return unless cfg.persistence_gateway.present?

  Persistence.setup(container, cfg.persistence_gateway[:repositories])
end
constantize(*parts) click to toggle source
# File lib/realm/builder.rb, line 65
def constantize(*parts)
  return parts[0] unless parts[0].is_a?(String)

  parts.join('::').safe_constantize
end
container() click to toggle source
# File lib/realm/builder.rb, line 75
def container
  @container ||= Container.new
end
logger() click to toggle source
# File lib/realm/builder.rb, line 79
def logger
  @logger ||= cfg.logger || (defined?(Rails) && Rails.logger) ||
              Logger.new($stdout, level: ENV.fetch('LOG_LEVEL', :info).to_sym)
end
register_dependencies() click to toggle source
# File lib/realm/builder.rb, line 49
def register_dependencies
  container.register_all(**cfg.dependencies)
end
register_domain_resolver() click to toggle source
# File lib/realm/builder.rb, line 31
def register_domain_resolver
  container.register_factory(DomainResolver, constantize(cfg.domain_module))
end
register_event_router() click to toggle source
# File lib/realm/builder.rb, line 35
def register_event_router
  return if cfg.event_gateways.empty?

  container.register_factory(EventRouter, cfg.event_gateways, prefix: cfg.prefix)
end
register_logger() click to toggle source
# File lib/realm/builder.rb, line 45
def register_logger
  container.register(:logger, logger)
end
register_runtime() click to toggle source
# File lib/realm/builder.rb, line 41
def register_runtime
  container.register_factory(Runtime, container)
end
setup_plugins() click to toggle source
# File lib/realm/builder.rb, line 53
def setup_plugins
  Plugin.descendants.each do |plugin|
    plugin.setup(cfg, container) if cfg.plugins.include?(plugin.plugin_name)
  end
end