Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

NotImplementedError (Use a queueing backend...) using delayed_job

In my Rails app (4.2.4), I have been trying to get asynchronous mail sending to work.

I installed delayed_job as my queue adapter, and set it as the adapter in several places: config/application.rb, config/environments/{development,production}.rb, and config/initializers/active_job.rb.

Installation:

I added this to my Gemfile:

gem 'delayed_job_active_record'

Then, I ran the following commands:

$ bundle install
$ rails generate delayed_job:active_record
$ rake db:migrate
$ bin/delayed_job start

In config/application.rb, config/environments/production.rb, config/environments/development.rb:

config.active_job.queue_adapter = :delayed_job

In config/initializers/active_job.rb (added when the above did not work):

ActiveJob::Base.queue_adapter = :delayed_job

I've also run an ActiveRecord migration for delayed_job, and started bin/delayed_job before running my server.

That being said, any time I try:

UserMailer.welcome_email(@user).deliver_later(wait: 1.minutes)

I get the following error:

NotImplementedError (Use a queueing backend to enqueue jobs in the
future. Read more at http://guides.rubyonrails.org/active_job_basics.html):
    app/controllers/user_controller.rb:25:in `create'
    config.ru:25:in `call'

I was under the impression that delayed_job is a queueing backend... am I missing something?

EDIT:

I can't get sucker_punch to work either. When installing sucker_punch in the bundler, and using:

config.active_job.queue_adapter = :sucker_punch

in config/application.rb, I get the same error and stack trace.

like image 214
Anish Goyal Avatar asked May 17 '16 15:05

Anish Goyal


2 Answers

If you are having this issue in your development environment even though you are using an adapter capable of asynchronous jobs like Sidekiq, make sure that Rails.application.config.active_job.queue_adapter is set to :async instead of :inline.

# config/environments/development.rb

Rails.application.config.active_job.queue_adapter = :async
like image 52
littleforest Avatar answered Sep 17 '22 15:09

littleforest


Provide you are following all the steps listed here, I feel you didn't start delayed_job running

bin/delayed_job start

Please also check you run

rails generate delayed_job:active_record
rake db:migrate
like image 28
Emiliano Della Casa Avatar answered Sep 18 '22 15:09

Emiliano Della Casa