Class: Traut::Server

Inherits:
Object
  • Object
show all
Defined in:
lib/traut/server.rb

Instance Method Summary collapse

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

#runObject

() -> ()



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