module Emque::Consuming::Core

Attributes

instance[RW]
root[RW]
router[RW]
topic_mapping[RW]

Public Class Methods

extended(descendant) click to toggle source
# File lib/emque/consuming/core.rb, line 12
def self.extended(descendant)
  descendant.class_eval do
    class << self
      attr_accessor :root, :topic_mapping, :router, :instance

      alias :configure :instance_exec
    end
  end
end

Public Instance Methods

config() click to toggle source
# File lib/emque/consuming/core.rb, line 40
def config
  @config ||= Emque::Consuming::Configuration.new
end
emque_env() click to toggle source
# File lib/emque/consuming/core.rb, line 86
def emque_env
  config.env_var || ENV["EMQUE_ENV"] || "development"
end
initialize_core!() click to toggle source
# File lib/emque/consuming/core.rb, line 22
def initialize_core!
  unless root
    call_stack = caller_locations.map(&:path)
    self.root = File.expand_path(
      "../..",
      call_stack.find { |call| call !~ %r{lib/emque} }
    )
  end

  self.topic_mapping = {}

  config.app_name = Inflecto.underscore(to_s).gsub("/application","")

  load_app!
  initialize_environment!
  initialize_router!
end
initialize_environment!() click to toggle source
# File lib/emque/consuming/core.rb, line 44
def initialize_environment!
  require_relative File.join(
    root,
    "config",
    "environments",
    "#{emque_env}.rb"
  )
end
initialize_logger(daemonized: false) click to toggle source
# File lib/emque/consuming/core.rb, line 53
def initialize_logger(daemonized: false)
  target = daemonized ? logfile : STDOUT
  Emque::Consuming::Logging.initialize_logger(target)
  Emque::Consuming.logger.level = config.log_level
  Emque::Consuming.logger.formatter = config.log_formatter
  Celluloid.logger = Emque::Consuming.logger
end
initialize_router!() click to toggle source
# File lib/emque/consuming/core.rb, line 61
def initialize_router!
  self.router ||= Emque::Consuming::Router.new
  require_relative File.join(root, "config", "routes.rb")
end
load_app!() click to toggle source
# File lib/emque/consuming/core.rb, line 66
def load_app!
  app_files = Dir[File.join(root, "app", "**", "*.rb")]

  app_files.each do |app_file|
    klass = Inflecto.classify(File.basename(app_file, ".rb"))
    emque_autoload(klass.to_sym, app_file)
  end
end
logfile() click to toggle source
# File lib/emque/consuming/core.rb, line 75
def logfile
  @logfile ||= File.join(root, "log/#{emque_env}.log").tap do |path|
    directory = File.dirname(path)
    Dir.mkdir(directory) unless File.exist?(directory)
  end
end
logger() click to toggle source
# File lib/emque/consuming/core.rb, line 82
def logger
  Emque::Consuming.logger
end