DelayedJob Mongoid backend
Delayed Job Mongoid supports the following dependency versions:
- Ruby 2.3+
- Mongoid 5+
For Mongoid 3 and 4, use 2.x version of this gem.
Add the gem to your Gemfile:
Then create the indexes (don't forget to do this in production):
script/rails runner 'Delayed::Backend::Mongoid::Job.create_indexes'
rails generate delayed_job
That's it. Use delayed_job as normal.
Silencing Noisy Logging
By default, the Mongo Ruby Driver will print log lines every
5 seconds as Delayed Job polls your database. Use the following
plugin to silence logs which happen while polling (except
level) and only log operations which happen during job execution.
# in initializers/delayed_job.rb require 'delayed/plugins/mongo_silencer' Delayed::Worker.plugins << Delayed::Plugins::MongoSilencer
To ensure thread safety, this plugin requires your
to be an instance of
ActiveSupport::Logger class. It will ignore instances
of the Ruby standard library
Customizing Job Class
Delayed Job allows specifying a custom backend class for jobs. For example, you may wish to specify a different database collection name. To do this:
# in an initializer class MyJob include ::Mongoid::Document store_in(collection: :my_jobs) include ::Delayed::Backend::Mongoid::Mixin end Delayed::Worker.backend = MyJob # in your application MyJob.enqueue(job_object)