Skip to content

Instantly share code, notes, and snippets.

@mkyed
Created September 19, 2013 09:41
Show Gist options
  • Save mkyed/6621239 to your computer and use it in GitHub Desktop.
Save mkyed/6621239 to your computer and use it in GitHub Desktop.
Look for already existing Delayed::Job
class Delayed::Job
scope :waiting, lambda{where(failed_at: nil).where(locked_at: nil)}
def self.include?(object, method_name = nil, queue = :default)
object_class = object.respond_to?(:id) ? object.class : object
object_id = object.respond_to?(:id) && object.id
waiting.where(queue: queue).detect do |job|
o = job.payload_object.object
m = method_name.present? ? job.payload_object.method_name : nil
o_class = o.respond_to?(:id) ? o.class : o
o_id = o.respond_to?(:id) && o.id
o_class == object_class &&
o_id == object_id &&
m == method_name
end
end
# quick and dirty
def self.find_by_object(object, queue = :default)
where(queue: queue).where("handler like '%#{object.class.name}%id: #{object.id}%'").first
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment