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



84
85
86
# File 'lib/emque/consuming/core.rb', line 84

def emque_env
  config.env_var || ENV["EMQUE_ENV"] || ENV["RACK_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_loggerObject



53
54
55
56
57
# File 'lib/emque/consuming/core.rb', line 53

def initialize_logger
  Emque::Consuming::Logging.initialize_logger(logfile)
  Emque::Consuming.logger.level = config.log_level
  Celluloid.logger = Emque::Consuming.logger
end

#initialize_router!Object



59
60
61
62
# File 'lib/emque/consuming/core.rb', line 59

def initialize_router!
  self.router ||= Emque::Consuming::Router.new
  require_relative File.join(root, "config", "routes.rb")
end

#load_app!Object



64
65
66
67
68
69
70
71
# File 'lib/emque/consuming/core.rb', line 64

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



73
74
75
76
77
78
# File 'lib/emque/consuming/core.rb', line 73

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



80
81
82
# File 'lib/emque/consuming/core.rb', line 80

def logger
  Emque::Consuming.logger
end