lib/cloudist/job.rb in cloudist-0.4.4 vs lib/cloudist/job.rb in cloudist-0.5.0

- old
+ new

@@ -1,85 +1,85 @@ module Cloudist class Job attr_reader :payload, :reply_queue - + def initialize(payload) @payload = payload - + if payload.reply_to @reply_queue = ReplyQueue.new(payload.reply_to) reply_queue.setup else @reply_queue = nil end end - + def id payload.id end - + def data payload.body end - + def body data end - + def log Cloudist.log end - + def cleanup # :noop end - + def reply(body, headers = {}, options = {}) raise ArgumentError, "Reply queue not ready" unless reply_queue - + options = { :echo => false }.update(options) - + headers = { :message_id => payload.id, :message_type => "reply" }.update(headers) - + reply_payload = Payload.new(body, headers) published_headers = reply_queue.publish(reply_payload) - + reply_payload end - + # Sends a progress update # Inputs: percentage - Integer # Optional description, this could be displayed to the user e.g. Resizing image def progress(percentage, description = nil) reply({:progress => percentage, :description => description}, {:message_type => 'progress'}) end - + def event(event_name, event_data = {}, options = {}) event_data ||= {} reply(event_data, {:event => event_name, :message_type => 'event'}, options) end - + def safely(&blk) yield rescue Exception => e handle_error(e) end - + def handle_error(e) reply({:exception => e.class.name.to_s, :message => e.message.to_s, :backtrace => e.backtrace}, {:message_type => 'error'}) end - + def method_missing(meth, *args, &blk) if meth.to_s.ends_with?("!") event(meth.to_s.gsub(/(!)$/, ''), args.shift) else super end end - + end end