Module: Tochtli

Defined in:
lib/tochtli.rb,
lib/tochtli/test.rb,
lib/tochtli/engine.rb,
lib/tochtli/message.rb,
lib/tochtli/version.rb,
lib/tochtli/application.rb,
lib/tochtli/base_client.rb,
lib/tochtli/reply_queue.rb,
lib/tochtli/test/client.rb,
lib/tochtli/rabbit_client.rb,
lib/tochtli/test/test_case.rb,
lib/tochtli/test/test_unit.rb,
lib/tochtli/base_controller.rb,
lib/tochtli/test/controller.rb,
lib/tochtli/test/integration.rb,
lib/tochtli/rabbit_connection.rb,
lib/tochtli/simple_validation.rb,
lib/tochtli/test/memory_cache.rb,
lib/tochtli/controller_manager.rb,
lib/tochtli/active_record_connection_cleaner.rb

Defined Under Namespace

Modules: SimpleValidation, Test Classes: ActiveRecordConnectionCleaner, Application, BaseClient, BaseController, ControllerManager, Engine, ErrorHandler, ErrorMessage, InvalidMessageError, Message, MessageDropped, MessageError, MessageHandler, MessageLogger, MessageSetup, Middleware, MiddlewareStack, RabbitClient, RabbitConnection, ReplyQueue

Constant Summary collapse

VERSION =
File.readlines(File.expand_path('../../../VERSION', __FILE__))[0].chomp

Class Attribute Summary collapse

Class Method Summary collapse

Class Attribute Details

.cacheObject



79
80
81
82
83
84
# File 'lib/tochtli.rb', line 79

def cache
  if !@cache && defined?(Rails)
    @cache = Rails.cache
  end
  @cache
end

.debug_bunnyObject

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



64
65
66
# File 'lib/tochtli.rb', line 64

def debug_bunny
  @debug_bunny
end

.loggerObject



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

Class Method Details

.applicationObject



86
87
88
89
90
91
92
# File 'lib/tochtli.rb', line 86

def application
  unless @application
    @application = Tochtli::Application.new
    @application.use_default_middlewares
  end
  @application
end

.eager_load_service_controllersObject



150
151
152
153
154
155
156
# 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_messagesObject



142
143
144
145
146
147
148
# 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) ⇒ Object



158
159
160
161
162
163
164
# 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_servicesObject

Should be invoked only once



95
96
97
98
# File 'lib/tochtli.rb', line 95

def load_services
  eager_load_service_messages
  eager_load_service_controllers
end

.restart_services(rabbit_config = nil, logger = nil) ⇒ Object



129
130
131
132
133
134
135
136
137
138
139
140
# 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?Boolean

Returns:

  • (Boolean)


125
126
127
# File 'lib/tochtli.rb', line 125

def services_running?
  ControllerManager.running?
end

.start_services(rabbit_config = nil, logger = nil) ⇒ Object



100
101
102
103
104
105
106
107
108
109
110
111
# 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) ⇒ Object



113
114
115
116
117
118
119
120
121
122
123
# 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