Search code examples
ruby-on-railsdevisesidekiq

Rails - Devise Async (sidekiq)


I'm using devise-asyn gem with sidekiq backend, but when send some email, I get the following error:

ArgumentError (wrong number of arguments (given 3, expected 1..2)):

devise-async (0.7.0) lib/devise/async/model.rb:27:in `send_devise_notification'

any ideas how to fix it? thanks!

EDIT:

Some of my setup: I'm using Rails 5

Gemfile:

gem 'devise' ,'~> 4.1.0' 
gem 'redis-rails'
gem 'sidekiq'
gem 'sinatra', github: 'sinatra/sinatra', require: false
gem 'devise-async'

devise_async.rb intializer:

Devise::Async.setup do |config|
  config.backend = :sidekiq
  config.queue   = :mailer
end

User class (renamed it, it's called Usuario):

class Usuario < ApplicationRecord
  # Include default devise modules. Others available are:
  # :confirmable, :lockable, :timeoutable and :omniauthable
  devise :database_authenticatable, :async, :recoverable, :rememberable, :trackable, :validatable
 ...
end

sidekiq.yml config:

:queues:
  - default
  - [mailers, 2]

I'm running sidekiq with:

bundle exec sidekiq --environment development -C config/sidekiq.yml

Already restarted rails server, sidekiq and redis server, but still get the same error


Solution

  • Use gem 'devise' ,'~> 4.1.0'

    /config/initializers/devise_async.rb

    Devise::Async.setup do |config|
      config.backend = :sidekiq
      config.queue   = :mailer
    end
    

    /app/models/user.rb

        class User < ActiveRecord::Base
        devise :database_authenticatable, :registerable,
             :recoverable, :rememberable, :trackable, :validatable,   :async, :confirmable 
       end
    

    config/sidekiq.yml

    :queues:
      - default
      - [mailers, 2]