aboutsummaryrefslogtreecommitdiffstats
path: root/README.md
diff options
context:
space:
mode:
authorDavid Heinemeier Hansson <david@loudthinking.com>2014-05-19 12:06:24 +0200
committerDavid Heinemeier Hansson <david@loudthinking.com>2014-05-19 12:06:24 +0200
commitf71147ecb097884b281b2027131aefd315a8e033 (patch)
tree5a25d4da1e418e6420aef6c731c03900741ef2f2 /README.md
parent211ce71400449c7e65cbef8ba9546418a20b3c8f (diff)
downloadrails-f71147ecb097884b281b2027131aefd315a8e033.tar.gz
rails-f71147ecb097884b281b2027131aefd315a8e033.tar.bz2
rails-f71147ecb097884b281b2027131aefd315a8e033.zip
Use markdown instead of rdoc
Diffstat (limited to 'README.md')
-rw-r--r--README.md81
1 files changed, 81 insertions, 0 deletions
diff --git a/README.md b/README.md
new file mode 100644
index 0000000000..84d40809f7
--- /dev/null
+++ b/README.md
@@ -0,0 +1,81 @@
+= Active Job -- Make work happen later
+
+Active Job is a framework for declaring jobs and making them run on a variety
+of queueing backends. These jobs can be everything from regularly scheduled
+clean-ups, billing charges, or mailings. Anything that can be chopped up into
+small units of work and run in parallel, really.
+
+It also serves as the backend for ActionMailer's #deliver_later functionality
+that makes it easy to turn any mailing into a job for running later. That's
+one of the most common jobs in a modern web application: Sending emails outside
+of the request-response cycle, so the user doesn't have to wait on it.
+
+
+== GlobalID support
+
+Active Job supports GlobalID serialization for parameters. This makes it possible
+to pass live Active Record objects to your job instead of class/id pairs, which
+you then have to manually deserialize. Before, jobs would look like this:
+
+```ruby
+class TrashableCleanupJob
+ def self.perfom(trashable_class, trashable_id, depth)
+ trashable = trashable_class.constantize.find(trashable_id)
+ trashable.cleanup(depth)
+ end
+end
+```
+
+Now you can simply do:
+
+```ruby
+class TrashableCleanupJob
+ def self.perfom(trashable, depth)
+ trashable.cleanup(depth)
+ end
+end
+```
+
+This works with any class that mixes in ActiveModel::GlobalIdentification, which
+by default has been mixed into Active Record classes.
+
+
+== Supported queueing systems
+
+We currently have adapters for:
+
+* Resque 1.x
+* Sidekiq
+* Sucker Punch
+* Delayed Job
+
+We would like to have adapters for:
+
+* beanstalkd
+* rabbitmq
+
+
+== Under development as a gem, targeted for Rails inclusion
+
+Active Job is currently being developed in a separate repository until it's
+ready to be merged in with Rails. The current plan is to have Active Job
+be part of the Rails 4.2 release, but plans may change depending on when
+this framework stabilizes and feels ready.
+
+
+== Download and installation
+
+The latest version of Active Job can be installed with RubyGems:
+
+ % [sudo] gem install activejob
+
+Source code can be downloaded as part of the Rails project on GitHub
+
+* https://github.com/rails/activejob
+
+
+== License
+
+Active Job is released under the MIT license:
+
+* http://www.opensource.org/licenses/MIT