aboutsummaryrefslogtreecommitdiffstats
path: root/guides/source/active_job_basics.md
diff options
context:
space:
mode:
authorAndreas Metzger <Andreas_Metzger@GMX.de>2015-06-10 21:17:59 +0200
committerAndreas Metzger <Andreas_Metzger@GMX.de>2015-06-14 10:32:46 +0200
commit3b24aa9fd3c194be3f8ba998dac9fd2ab3c6e54f (patch)
tree32928d823d27fca3581fafcffcd7c9f9427d7f23 /guides/source/active_job_basics.md
parent96bb004fc6e67cdf1b873f11ad5f8efd06949797 (diff)
downloadrails-3b24aa9fd3c194be3f8ba998dac9fd2ab3c6e54f.tar.gz
rails-3b24aa9fd3c194be3f8ba998dac9fd2ab3c6e54f.tar.bz2
rails-3b24aa9fd3c194be3f8ba998dac9fd2ab3c6e54f.zip
Extended 'Active Job Basics' edge guide with more detailed information and an additional step [ci skip]
Normalized use of 'queueing'/'queuing' in the document.
Diffstat (limited to 'guides/source/active_job_basics.md')
-rw-r--r--guides/source/active_job_basics.md53
1 files changed, 41 insertions, 12 deletions
diff --git a/guides/source/active_job_basics.md b/guides/source/active_job_basics.md
index 29d0c32b09..cc7a944f49 100644
--- a/guides/source/active_job_basics.md
+++ b/guides/source/active_job_basics.md
@@ -4,7 +4,7 @@ Active Job Basics
=================
This guide provides you with all you need to get started in creating,
-enqueueing and executing background jobs.
+enqueuing and executing background jobs.
After reading this guide, you will know:
@@ -20,7 +20,7 @@ Introduction
------------
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
+of queuing backends. These jobs can be everything from regularly scheduled
clean-ups, to billing charges, to mailings. Anything that can be chopped up
into small units of work and run in parallel, really.
@@ -28,11 +28,14 @@ into small units of work and run in parallel, really.
The Purpose of Active Job
-----------------------------
The main point is to ensure that all Rails apps will have a job infrastructure
-in place, even if it's in the form of an "immediate runner". We can then have
-framework features and other gems build on top of that, without having to
-worry about API differences between various job runners such as Delayed Job
-and Resque. Picking your queuing backend becomes more of an operational concern,
-then. And you'll be able to switch between them without having to rewrite your jobs.
+in place. We can then have framework features and other gems build on top of that,
+without having to worry about API differences between various job runners such as
+Delayed Job and Resque. Picking your queuing backend becomes more of an operational
+concern, then. And you'll be able to switch between them without having to rewrite
+your jobs.
+
+NOTE: Rails by default comes with an "immediate runner" queuing implementation.
+That means that each job that has been enqueued will run immediately.
Creating a Job
@@ -73,12 +76,31 @@ class GuestsCleanupJob < ActiveJob::Base
end
```
+### Make the Job Available for Use
+
+Rails does not autoload the `app/jobs` directory by default. To make your job
+accessible in the rest of your application you need to add the directory to the
+auto-load paths:
+
+```ruby
+# config/application.rb
+module YourApp
+ class Application < Rails::Application
+ # Let Rails autoload your job classes for use in your code
+ config.autoload_paths << Rails.root.join('app/jobs')
+ end
+end
+```
+
+Now you can make use of the job anywhere in your code (e.g. in your controllers
+or models).
+
### Enqueue the Job
Enqueue a job like so:
```ruby
-# Enqueue a job to be performed as soon the queueing system is
+# Enqueue a job to be performed as soon the queuing system is
# free.
MyJob.perform_later record
```
@@ -99,17 +121,20 @@ That's it!
Job Execution
-------------
-If no adapter is set, the job is immediately executed.
+For enqueuing and executing jobs you need to set up a queuing backend, that is to
+say you need to decide for a 3rd-party queuing library that Rails should use.
+Rails itself does not provide a sophisticated queuing system and just executes the
+job immediately if no adapter is set.
### Backends
-Active Job has built-in adapters for multiple queueing backends (Sidekiq,
+Active Job has built-in adapters for multiple queuing backends (Sidekiq,
Resque, Delayed Job and others). To get an up-to-date list of the adapters
see the API Documentation for [ActiveJob::QueueAdapters](http://api.rubyonrails.org/classes/ActiveJob/QueueAdapters.html).
### Setting the Backend
-You can easily set your queueing backend:
+You can easily set your queuing backend:
```ruby
# config/application.rb
@@ -123,6 +148,10 @@ module YourApp
end
```
+NOTE: Since jobs run in parallel to your Rails application, most queuing libraries
+require that you start a library-specific queuing service (in addition to
+starting your Rails app) for the job processing to work. For information on
+how to do that refer to the documentation of your respective library.
Queues
------
@@ -212,7 +241,7 @@ end
ProcessVideoJob.perform_later(Video.last)
```
-NOTE: Make sure your queueing backend "listens" on your queue name. For some
+NOTE: Make sure your queuing backend "listens" on your queue name. For some
backends you need to specify the queues to listen to.