Class: Traut::Server
- Inherits:
-
Object
- Object
- Traut::Server
- Defined in:
- lib/traut/server.rb
Instance Method Summary collapse
-
#initialize(params) ⇒ Server
constructor
A new instance of Server.
-
#run ⇒ Object
-
() -> ().
Constructor Details
#initialize(params) ⇒ Server
Returns a new instance of Server.
7 8 9 10 11 12 |
# File 'lib/traut/server.rb', line 7 def initialize(params) @channel = params[:channel] || raise('parameter :channel required') @exchange = params[:exchange] || raise('parameter :exchange required') @events = params[:events] || raise('parameter :events required') @log = params[:log] || raise('parameter :log required') end |
Instance Method Details
#run ⇒ Object
-
() -> ()
15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
# File 'lib/traut/server.rb', line 15 def run subscribe('#') do |headers, payload| @log.debug("Noted the reception of message with route '#{headers.routing_key}'.") end @events.each do |event| route, script, user, group = event['event'], event['command'], event['user'], event['group'] @log.debug("Registering #{script} to run as #{user}:#{group} for event #{route}") subscribe(route) do |headers, payload| Traut.spawn(:user => user, :group => group, :command => script, :payload => payload, :logger => @log) do |status, stdout, stderr| condition = 0 == status.exitstatus ? :debug : :error result = {:exitstatus => status.exitstatus, :stdout => stdout.strip, :stderr => stderr.strip} @log.send(condition, "[#{script}] #{result}") publish(result.to_json, headers.routing_key) end end # channel.queue end # eventmap.each end |