Yet Another Rails Background job processor
Ruby
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
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