class Tochtli::ControllerManager
Attributes
cache[R]
logger[R]
rabbit_connection[R]
Public Class Methods
new()
click to toggle source
# File lib/tochtli/controller_manager.rb, line 9 def initialize @controller_classes = Set.new end
Protected Class Methods
method_missing(method, *args)
click to toggle source
Calls superclass method
# File lib/tochtli/controller_manager.rb, line 89 def method_missing(method, *args) if instance.respond_to?(method) instance.send(method, *args) else super end end
Public Instance Methods
register(controller_class)
click to toggle source
# File lib/tochtli/controller_manager.rb, line 13 def register(controller_class) raise ArgumentError, "Controller expected, got: #{controller_class}" unless controller_class.is_a?(Class) && controller_class < Tochtli::BaseController @controller_classes << controller_class end
restart(options={})
click to toggle source
# File lib/tochtli/controller_manager.rb, line 60 def restart(options={}) options[:rabbit_connection] ||= @rabbit_connection options[:logger] ||= @logger options[:cache] ||= @cache setup options restart_active_controllers end
running?()
click to toggle source
# File lib/tochtli/controller_manager.rb, line 73 def running? @rabbit_connection && @rabbit_connection.open? end
set_up?()
click to toggle source
# File lib/tochtli/controller_manager.rb, line 69 def set_up? !@rabbit_connection.nil? end
setup(options={})
click to toggle source
# File lib/tochtli/controller_manager.rb, line 18 def setup(options={}) @logger = options.fetch(:logger, Tochtli.logger) @cache = options.fetch(:cache, Tochtli.cache) @rabbit_connection = options[:connection] unless @rabbit_connection @rabbit_connection = RabbitConnection.open(options[:config]) end end
start(*controllers)
click to toggle source
# File lib/tochtli/controller_manager.rb, line 28 def start(*controllers) options = controllers.extract_options! setup_options = options.except!(:logger, :cache, :connection) queue_name = options.delete(:queue_name) routing_keys = options.delete(:routing_keys) initial_env = options.delete(:env) || {} setup(setup_options) unless set_up? if controllers.empty? || controllers.include?(:all) controllers = @controller_classes end controllers.each do |controller_class| raise ArgumentError, "Controller expected, got: #{controller_class.inspect}" unless controller_class.is_a?(Class) && controller_class < Tochtli::BaseController unless controller_class.started?(queue_name) controller_class.setup(@rabbit_connection, @cache, @logger) unless controller_class.set_up? controller_class.start queue_name, routing_keys, initial_env @logger.info "[#{Time.now} AMQP] Started #{controller_class}" if @logger end end end
stop()
click to toggle source
# File lib/tochtli/controller_manager.rb, line 51 def stop @controller_classes.each do |controller_class| if controller_class.stop @logger.info "[#{Time.now} AMQP] Stopped #{controller_class}" if @logger end end @rabbit_connection = nil end
Protected Instance Methods
restart_active_controllers()
click to toggle source
# File lib/tochtli/controller_manager.rb, line 79 def restart_active_controllers @controller_classes.each do |controller_class| if controller_class.started? @logger.info "Restarting #{controller_class}..." if @logger controller_class.restart end end end