module Leveret::Job

Include this module in your job to create a leveret compatible job. Once included, simply override perform to do your jobs action.

To set a different queue name call queue_name in your class, to set the default priority call priority in your class.

To queue a job simply call enqueue on the class with the parameters to be passed. These params will be serialized as JSON in the interim, so ensure that your params are json-safe.

@example Job Class

class MyJob
  include Leveret::Job

  queue_name 'my_custom_queue' # omit for default
  priority :high # omit for default

  def perform
    File.open('/tmp/leveret-test-file.txt', 'a+') do |f|
      f.puts params[:test_text]
    end

    sleep 5 # Job takes a long time
  end
end

@example Queueing a Job

# With options defined in class
MyJob.enqueue(test_text: "Hi there, please write this text to the file")

# Set the job priority at queue time
MyJob.enqueue(test_text: "Hi there, please write this important text to the file", priority: :high)

# Place in a different queue to the one defined in the class
MyJob.enqueue(test_text: "Hi there, please write this different text to the file", queue_name: 'other_queue')

Public Class Methods

included(base) click to toggle source
# File lib/leveret/job.rb, line 158
def self.included(base)
  base.extend ClassMethods
  base.include InstanceMethods
end