Class: Praetor::Service
- Inherits:
-
Object
- Object
- Praetor::Service
- Defined in:
- lib/praetor/service.rb
Class Attribute Summary collapse
-
._controllers ⇒ Object
readonly
Returns the value of attribute _controllers.
Instance Attribute Summary collapse
-
#redis ⇒ Object
Returns the value of attribute redis.
Class Method Summary collapse
Instance Method Summary collapse
Class Attribute Details
._controllers ⇒ Object (readonly)
Returns the value of attribute _controllers.
8 9 10 |
# File 'lib/praetor/service.rb', line 8 def _controllers @_controllers end |
Instance Attribute Details
#redis ⇒ Object
Returns the value of attribute redis.
20 21 22 |
# File 'lib/praetor/service.rb', line 20 def redis @redis end |
Class Method Details
.controller(klass) ⇒ Object
10 11 12 13 |
# File 'lib/praetor/service.rb', line 10 def controller(klass) klass.include ServiceController (@_controllers ||= []) << klass end |
.endpoint ⇒ Object
15 16 17 |
# File 'lib/praetor/service.rb', line 15 def endpoint @endpoint ||= name.underscore end |
Instance Method Details
#dispatch!(request) ⇒ Object
36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
# File 'lib/praetor/service.rb', line 36 def dispatch!(request) controller = request['controller'] action = request['action'] params = request['params'] || {} check_controller! controller klass = controller.constantize check_action! klass, action instance = klass.new instance.instance_variable_set :@params, params instance.send action end |
#run ⇒ Object
22 23 24 25 26 27 28 29 30 31 32 33 34 |
# File 'lib/praetor/service.rb', line 22 def run = ENV['REDIS_PROVIDER'] ? { url: ENV['REDIS_PROVIDER'] } : {} @redis = Redis.new loop do # Pop off the next request (or block until one arrives) _, request = @redis.brpop self.class.endpoint # You can shut down a service by issuing a stop command; useful for testing break if request == 'stop' handle_request JSON.parse(request) end end |