Class: Rrake::Raker

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

Instance Method Summary collapse

Constructor Details

#initializeRaker

Returns a new instance of Raker.

Raises:

  • (RuntimeError)


10
11
12
13
14
15
16
17
18
19
20
21
22
23
# File 'lib/rrake.rb', line 10

def initialize
  @awsAccessKeyId = ENV['AWS_ACCESS_KEY']
  @awsSecretAccessKey = ENV['AWS_SECRET_ACCESS_KEY']
  @rrakeQueue = ENV['RRAKE_QUEUE']
  logfile = ENV['RRAKE_LOGFILE_PATH'].nil? ? STDOUT : File.open(ENV['RRAKE_LOGFILE_PATH'], 'a')
  @logger = Logger.new logfile
  @stop = false

  raise RuntimeError, "Please ensure AWS_ACCESS_KEY is set." if @awsAccessKeyId.empty?
  raise RuntimeError, "Please ensure AWS_SECRET_ACCESS_KEY is set." if @awsSecretAccessKey.empty?
  raise RuntimeError, "Please ensure RRAKE_QUEUE is set." if @rrakeQueue.empty?

  @logger.info "RRake is ready to do your remote bidding."
end

Instance Method Details

#handle_received_message(message) ⇒ Object



47
48
49
50
51
# File 'lib/rrake.rb', line 47

def handle_received_message(message)
  sns_msg = JSON.parse(message.body)
  rake_cmd = "rake #{sns_msg['Message']}" 
  @logger.info %x[ #{rake_cmd} ]
end

#process_messagesObject



29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
# File 'lib/rrake.rb', line 29

def process_messages
  @logger.info "RRake awaiting first command."
  begin
    sqs = AWS::SQS.new(region: 'us-east-1', access_key_id: @awsAccessKeyId, secret_access_key: @awsSecretAccessKey)
    sqs.queues[@rrakeQueue].poll do |message|
      if block_given?
        yield message, @options
      else
        handle_received_message(message)
      end
      return if @stop
    end
  rescue Exception => ex
    @logger.error "Something cause an SQS failure."
    @logger.error ex
  end
end

#stopObject



25
26
27
# File 'lib/rrake.rb', line 25

def stop
  @stop = true
end