module Tochtli

Constants

VERSION

Attributes

cache[W]

Global cache store for services (default: Rails.cache)

debug_bunny[RW]

If set to true bunny log level would be set to DEBUG (by default it is WARN)

logger[W]

Global logger for services (default: RAILS_ROOT/log/service.log)

Public Class Methods

application() click to toggle source
# File lib/tochtli.rb, line 86
def application
  unless @application
    @application = Tochtli::Application.new
    @application.use_default_middlewares
  end
  @application
end
cache() click to toggle source
# File lib/tochtli.rb, line 79
def cache
  if !@cache && defined?(Rails)
    @cache = Rails.cache
  end
  @cache
end
eager_load_service_controllers() click to toggle source
# File lib/tochtli.rb, line 150
def eager_load_service_controllers
  existent_engine_paths('controllers').each do |load_path|
    Dir.glob("#{load_path}/**/*.rb").sort.each do |file|
      require file
    end
  end
end
eager_load_service_messages() click to toggle source
# File lib/tochtli.rb, line 142
def eager_load_service_messages
  existent_engine_paths('messages').each do |load_path|
    Dir.glob("#{load_path}/**/*.rb").sort.each do |file|
      require file
    end
  end
end
existent_engine_paths(type) click to toggle source
# File lib/tochtli.rb, line 158
def existent_engine_paths(type)
  engines = ::Rails::Engine.subclasses.map(&:instance)
  engines += [Rails.application]
  engines.collect do |railtie|
    railtie.paths["service/#{type}"].try(:existent)
  end.compact.flatten
end
load_services() click to toggle source

Should be invoked only once

# File lib/tochtli.rb, line 95
def load_services
  eager_load_service_messages
  eager_load_service_controllers
end
logger() click to toggle source
# File lib/tochtli.rb, line 66
def logger
  unless @logger
    if defined?(Rails)
      @logger       = Logger.new(File.join(Rails.root, 'log/service.log'))
      @logger.level = Rails.env.production? ? Logger::WARN : Logger::DEBUG
    else
      @logger       = Logger.new(STDERR)
      @logger.level = Logger::WARN
    end
  end
  @logger
end
restart_services(rabbit_config=nil, logger=nil) click to toggle source
# File lib/tochtli.rb, line 129
def restart_services(rabbit_config=nil, logger=nil)
  ControllerManager.stop if ControllerManager.running?
  ControllerManager.start(rabbit_config, logger)
  true
rescue
  if logger
    logger.error "Error during service restart"
    logger.error "#{$!.class}: #{$!}"
    logger.error $!.backtrace.join("\n")
  end
  false
end
services_running?() click to toggle source
# File lib/tochtli.rb, line 125
def services_running?
  ControllerManager.running?
end
start_services(rabbit_config=nil, logger=nil) click to toggle source
# File lib/tochtli.rb, line 100
def start_services(rabbit_config=nil, logger=nil)
  ControllerManager.setup(config: rabbit_config, logger: logger)
  ControllerManager.start
  true
rescue
  if logger
    logger.error "Error during service start"
    logger.error "#{$!.class}: #{$!}"
    logger.error $!.backtrace.join("\n")
  end
  false
end
stop_services(logger=nil) click to toggle source
# File lib/tochtli.rb, line 113
def stop_services(logger=nil)
  ControllerManager.stop
  true
rescue
  if logger
    logger.error "Error during service stop"
    logger.error "#{$!.class}: #{$!}"
    logger.error $!.backtrace.join("\n")
  end
  false
end