Skip to content
Yet Another Rails Background job processor
Ruby
Find file
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.
config
generators/yarb_migration
lib
recipes
script
tasks
test
MIT-LICENSE
README
Rakefile
init.rb
install.rb
uninstall.rb

README

YARB
====

Yet Another Rails Background job processor
http://github.com/jkraemer/yarb

This plugin is simple on purpose. It has a single threaded background process that executes the asynchronous
jobs one job at a time.


Example
=======

# create the job queue table
script/generate yarb_migration
rake db:migrate

# in your app, create a worker class like that:


# place into lib/my_worker.rb, for example.
class MyWorker < Yarb::Worker

  # initialize the worker with the job_data that was specified upon creation of the job.
  def create
    @newsletter = Newsletter.find job_data[:newsletter_id]
  end
  
  # halt execution if conditions aren't met (return false). Optional, default is 'always run'.
  def precheck
    @newsletter.should_send?
  end
  
  # re-try after failed precheck every 5 minutes (optional, dont override if you want no retries)
  def retry_interval; 5.minutes end
  
  # the actual work.
  def run
    @newsletter.subscribers.each do |subscriber|
      NewsletterMailer.deliver_newsletter(@newsletter, subscriber)
    end
    logger.info "finished sending newsletter"
  end

end


# schedule the job from within your application:

Yarb.create_job NewsletterWorker, :newsletter_id => @newsletter.id

Yarb.create_job NewsletterWorker, :newsletter_id => @newsletter.id, :run_at => 5.hours.from_now


Copyright (c) 2009 Jens Krämer <jk@jkraemer.net>, released under the MIT license
Something went wrong with that request. Please try again.