class WebsocketRails::ControllerFactory
Attributes
controller_stores[R]
dispatcher[R]
Public Class Methods
new(dispatcher)
click to toggle source
# File lib/websocket_rails/controller_factory.rb, line 6 def initialize(dispatcher) @dispatcher = dispatcher @controller_stores = {} @initialized_controllers = {} end
Public Instance Methods
new_for_event(event, controller_class, method)
click to toggle source
TODO: Add deprecation notice for user defined instance variables.
# File lib/websocket_rails/controller_factory.rb, line 14 def new_for_event(event, controller_class, method) controller_class = reload!(controller_class) controller = controller_class.new prepare(controller, event, method) controller end
Private Instance Methods
initialize_controller(controller)
click to toggle source
# File lib/websocket_rails/controller_factory.rb, line 57 def initialize_controller(controller) unless @initialized_controllers[controller.class] == true controller.send(:initialize_session) if controller.respond_to?(:initialize_session) @initialized_controllers[controller.class] = true end end
prepare(controller, event, method)
click to toggle source
# File lib/websocket_rails/controller_factory.rb, line 29 def prepare(controller, event, method) set_event(controller, event) set_dispatcher(controller, dispatcher) set_controller_store(controller) set_action_name(controller, method) initialize_controller(controller) end
reload!(controller)
click to toggle source
Reloads the controller class to pick up code changes while in the development environment.
# File lib/websocket_rails/controller_factory.rb, line 66 def reload!(controller) return controller unless defined?(Rails) and !Rails.configuration.cache_classes # we don't reload our own controller as we assume it provide as 'library' unless controller.name == "WebsocketRails::InternalController" class_name = controller.name filename = class_name.underscore load "#{filename}.rb" return class_name.constantize end return controller end
set_action_name(controller, method)
click to toggle source
# File lib/websocket_rails/controller_factory.rb, line 49 def set_action_name(controller, method) set_ivar :@_action_name, controller, method.to_s end
set_controller_store(controller)
click to toggle source
# File lib/websocket_rails/controller_factory.rb, line 45 def set_controller_store(controller) set_ivar :@_controller_store, controller, store_for_controller(controller) end
set_dispatcher(controller, dispatcher)
click to toggle source
# File lib/websocket_rails/controller_factory.rb, line 41 def set_dispatcher(controller, dispatcher) set_ivar :@_dispatcher, controller, dispatcher end
set_event(controller, event)
click to toggle source
# File lib/websocket_rails/controller_factory.rb, line 37 def set_event(controller, event) set_ivar :@_event, controller, event end
set_ivar(ivar, object, value)
click to toggle source
# File lib/websocket_rails/controller_factory.rb, line 53 def set_ivar(ivar, object, value) object.instance_variable_set(ivar, value) end
store_for_controller(controller)
click to toggle source
# File lib/websocket_rails/controller_factory.rb, line 25 def store_for_controller(controller) @controller_stores[controller.class] ||= DataStore::Controller.new(controller) end