aboutsummaryrefslogtreecommitdiffstats
path: root/guides/source/active_job_basics.md
diff options
context:
space:
mode:
Diffstat (limited to 'guides/source/active_job_basics.md')
-rw-r--r--guides/source/active_job_basics.md56
1 files changed, 31 insertions, 25 deletions
diff --git a/guides/source/active_job_basics.md b/guides/source/active_job_basics.md
index ae5d21d546..58e828d1b5 100644
--- a/guides/source/active_job_basics.md
+++ b/guides/source/active_job_basics.md
@@ -13,12 +13,13 @@ After reading this guide, you will know:
--------------------------------------------------------------------------------
+
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
-clean-ups, billing charges, or mailings. Anything that can be chopped up
+clean-ups, to billing charges, to mailings. Anything that can be chopped up
into small units of work and run in parallel, really.
@@ -35,12 +36,12 @@ then. And you'll be able to switch between them without having to rewrite your j
Creating a Job
--------------
-This section will provide a step-by-step guide to creating a job and enqueue it.
+This section will provide a step-by-step guide to creating a job and enqueuing it.
### Create the Job
Active Job provides a Rails generator to create jobs. The following will create a
-job in app/jobs:
+job in `app/jobs`:
```bash
$ bin/rails generate job guests_cleanup
@@ -58,9 +59,9 @@ As you can see, you can generate jobs just like you use other generators with
Rails.
If you don't want to use a generator, you could create your own file inside of
-app/jobs, just make sure that it inherits from `ActiveJob::Base`.
+`app/jobs`, just make sure that it inherits from `ActiveJob::Base`.
-Here's how a job looks like:
+Here's what a job looks like:
```ruby
class GuestsCleanupJob < ActiveJob::Base
@@ -94,7 +95,7 @@ That's it!
Job Execution
-------------
-If not adapter is set, the job is immediately executed.
+If no adapter is set, the job is immediately executed.
### Backends
@@ -127,7 +128,7 @@ Active Job has adapters for the following queueing backends:
### Change Backends
-You can easy change your adapter:
+You can easily change your adapter:
```ruby
# be sure to have the adapter gem in your Gemfile and follow the adapter specific
@@ -135,11 +136,12 @@ You can easy change your adapter:
YourApp::Application.config.active_job.queue_adapter = :sidekiq
```
+
Queues
------
-Most of the adapters supports multiple queues. With Active Job you can schedule the job
-to run on a specific queue:
+Most of the adapters support multiple queues. With Active Job you can schedule
+the job to run on a specific queue:
```ruby
class GuestsCleanupJob < ActiveJob::Base
@@ -155,17 +157,17 @@ you need to specify the queues to listen to.
Callbacks
---------
-Active Job provides hooks during the lifecycle of a job. Callbacks allows you to trigger
-logic during the lifecycle of a job.
+Active Job provides hooks during the lifecycle of a job. Callbacks allow you to
+trigger logic during the lifecycle of a job.
### Available callbacks
-* before_enqueue
-* around_enqueue
-* after_enqueue
-* before_perform
-* around_perform
-* after_perform
+* `before_enqueue`
+* `around_enqueue`
+* `after_enqueue`
+* `before_perform`
+* `around_perform`
+* `after_perform`
### Usage
@@ -189,25 +191,28 @@ class GuestsCleanupJob < ActiveJob::Base
end
```
+
ActionMailer
------------
+
One of the most common jobs in a modern web application is sending emails outside
of the request-response cycle, so the user doesn't have to wait on it. Active Job
-is integrated with Action Mailer so you can easily send emails async:
+is integrated with Action Mailer so you can easily send emails asynchronously:
```ruby
-# Instead of the classic
-UserMailer.welcome(@user).deliver
+# If you want to send the email now use #deliver_now
+UserMailer.welcome(@user).deliver_now
-# use #deliver later to send the email async
+# If you want to send the email through Active Job use #deliver_later
UserMailer.welcome(@user).deliver_later
```
+
GlobalID
--------
-Active Job supports GlobalID 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:
+Active Job supports GlobalID 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
@@ -228,12 +233,13 @@ class TrashableCleanupJob
end
```
-This works with any class that mixes in ActiveModel::GlobalIdentification, which
+This works with any class that mixes in `ActiveModel::GlobalIdentification`, which
by default has been mixed into Active Model classes.
Exceptions
----------
+
Active Job provides a way to catch exceptions raised during the execution of the
job: