OrderUp
A queue agnostic interface for Rails. Currently only Resque is supported, but we'd like to add other implementations if you want to contribute one.
Installation
Add this line to your application's Gemfile:
gem 'order_up'
And then execute:
$ bundle
Or install it yourself as:
$ gem install order_up
Usage
Create a config file: config/resque.yml
development: localhost:6379
test: localhost:6379
production: redis1.ae.github.com:6379
Then make an initializer that reads the yaml file and sets up Resque:
# config/initializers/resque.rb
rails_root = ENV['RAILS_ROOT'] || File.dirname(__FILE__) + '/../..'
rails_env = ENV['RAILS_ENV'] || 'development'
config = YAML::load_file(rails_root + '/config/resque.yml')
Resque.redis = config[rails_env]
Resque.inline = rails_env == 'test'
Resque.redis.namespace = "myproject:#{rails_env}"
Now you can push jobs into the queue:
class MyJob
def initialize(file_id, )
@file_id = file_id
@message =
end
def run
File.find(@file_id).deliver(@message)
end
end
my_job = MyJob.new(123, "It works!")
OrderUp.push(my_job)
The initalizer will be called when the job is created, and the run
method
will be invoked when the job is processed asynchronously.
Running the background workers
First add to your Rakefile
require 'resque/tasks'
Then you can invoke the rake task:
$ QUEUE=* rake environment resque:work
See also
(https://github.com/resque/resque/tree/1-x-stable)
Contributing
- Fork it ( http://github.com/
/order_up/fork ) - Create your feature branch (
git checkout -b my-new-feature
) - Commit your changes (
git commit -am 'Add some feature'
) - Push to the branch (
git push origin my-new-feature
) - Create new Pull Request