Class: Tochtli::ControllerManager
- Inherits:
-
Object
- Object
- Tochtli::ControllerManager
- Includes:
- Singleton
- Defined in:
- lib/tochtli/controller_manager.rb
Instance Attribute Summary collapse
-
#cache ⇒ Object
readonly
Returns the value of attribute cache.
-
#logger ⇒ Object
readonly
Returns the value of attribute logger.
-
#rabbit_connection ⇒ Object
readonly
Returns the value of attribute rabbit_connection.
Class Method Summary collapse
Instance Method Summary collapse
-
#initialize ⇒ ControllerManager
constructor
A new instance of ControllerManager.
- #register(controller_class) ⇒ Object
- #restart(options = {}) ⇒ Object
- #running? ⇒ Boolean
- #set_up? ⇒ Boolean
- #setup(options = {}) ⇒ Object
- #start(*controllers) ⇒ Object
- #stop ⇒ Object
Constructor Details
#initialize ⇒ ControllerManager
Returns a new instance of ControllerManager.
9 10 11 |
# File 'lib/tochtli/controller_manager.rb', line 9 def initialize @controller_classes = Set.new end |
Instance Attribute Details
#cache ⇒ Object (readonly)
Returns the value of attribute cache.
7 8 9 |
# File 'lib/tochtli/controller_manager.rb', line 7 def cache @cache end |
#logger ⇒ Object (readonly)
Returns the value of attribute logger.
7 8 9 |
# File 'lib/tochtli/controller_manager.rb', line 7 def logger @logger end |
#rabbit_connection ⇒ Object (readonly)
Returns the value of attribute rabbit_connection.
7 8 9 |
# File 'lib/tochtli/controller_manager.rb', line 7 def rabbit_connection @rabbit_connection end |
Class Method Details
.method_missing(method, *args) ⇒ Object
90 91 92 93 94 95 96 |
# File 'lib/tochtli/controller_manager.rb', line 90 def method_missing(method, *args) if instance.respond_to?(method) instance.send(method, *args) else super end end |
Instance Method Details
#register(controller_class) ⇒ Object
13 14 15 16 |
# 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 = {}) ⇒ Object
61 62 63 64 65 66 67 68 |
# File 'lib/tochtli/controller_manager.rb', line 61 def restart(={}) [:rabbit_connection] ||= @rabbit_connection [:logger] ||= @logger [:cache] ||= @cache setup restart_active_controllers end |
#running? ⇒ Boolean
74 75 76 |
# File 'lib/tochtli/controller_manager.rb', line 74 def running? @rabbit_connection && @rabbit_connection.open? end |
#set_up? ⇒ Boolean
70 71 72 |
# File 'lib/tochtli/controller_manager.rb', line 70 def set_up? !@rabbit_connection.nil? end |
#setup(options = {}) ⇒ Object
18 19 20 21 22 23 24 25 26 |
# File 'lib/tochtli/controller_manager.rb', line 18 def setup(={}) @logger = .fetch(:logger, Tochtli.logger) @cache = .fetch(:cache, Tochtli.cache) @rabbit_connection = [:connection] unless @rabbit_connection @rabbit_connection = RabbitConnection.open([:config]) end end |
#start(*controllers) ⇒ Object
28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
# File 'lib/tochtli/controller_manager.rb', line 28 def start(*controllers) = controllers. = .except!(:logger, :cache, :connection) queue_name = .delete(:queue_name) routing_keys = .delete(:routing_keys) initial_env = .delete(:env) || {} setup() 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) @logger.info "Starting #{controller_class}..." if @logger controller_class.setup(@rabbit_connection, @cache, @logger) unless controller_class.set_up? controller_class.start queue_name, routing_keys, initial_env end end end |
#stop ⇒ Object
51 52 53 54 55 56 57 58 59 |
# File 'lib/tochtli/controller_manager.rb', line 51 def stop @controller_classes.each do |controller_class| if controller_class.started? @logger.info "Stopping #{controller_class}..." if @logger controller_class.stop end end @rabbit_connection = nil end |