Module: Emque::Consuming::Core

Defined in:
lib/emque/consuming/core.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.extended(descendant) ⇒ Object



12
13
14
15
16
17
18
19
20
# 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

Instance Method Details

#configObject



40
41
42
# File 'lib/emque/consuming/core.rb', line 40

def config
  @config ||= Emque::Consuming::Configuration.new
end

#emque_envObject



86
87
88
# File 'lib/emque/consuming/core.rb', line 86

def emque_env
  config.env_var || ENV["EMQUE_ENV"] || "development"
end

#initialize_core!Object



22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# 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!Object



44
45
46
47
48
49
50
51
# 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) ⇒ Object



53
54
55
56
57
58
59
# 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!Object



61
62
63
64
# 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!Object



66
67
68
69
70
71
72
73
# 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

#logfileObject



75
76
77
78
79
80
# 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

#loggerObject



82
83
84
# File 'lib/emque/consuming/core.rb', line 82

def logger
  Emque::Consuming.logger
end