From b81d79fa15080e8950165cf69ac3122a0af5f7b9 Mon Sep 17 00:00:00 2001 From: Joseph Chen Date: Mon, 18 Jun 2018 17:29:10 -0700 Subject: [PATCH 1/4] Add support for Rails 4.2 --- .travis.yml | 3 +++ Gemfile | 15 +++++++++++++++ devise-async.gemspec | 5 +---- 3 files changed, 19 insertions(+), 4 deletions(-) diff --git a/.travis.yml b/.travis.yml index a4012dd..8ca540b 100644 --- a/.travis.yml +++ b/.travis.yml @@ -3,6 +3,9 @@ rvm: - 2.2.5 - 2.3.1 - 2.4.1 +env: + - RAILS_VERSION=4.2 + - RAILS_VERSION=5.0 before_install: - gem install bundler -v 1.15 diff --git a/Gemfile b/Gemfile index 5018971..d1d63da 100644 --- a/Gemfile +++ b/Gemfile @@ -2,3 +2,18 @@ source 'https://rubygems.org' # Specify your gem's dependencies in devise-async.gemspec gemspec + +case version = ENV['RAILS_VERSION'] || "~> 5.0" +when /5/ + gem "activerecord", "~> 5.0" + gem "actionpack", "~> 5.0" + gem "actionmailer", "~> 5.0" +when /4.2/ + gem "activerecord", "~> 4.2" + gem "actionpack", "~> 4.2" + gem "actionmailer", "~> 4.2" +else + gem "activerecord", version + gem "actionpack", version + gem "actionmailer", version +end diff --git a/devise-async.gemspec b/devise-async.gemspec index d36d7f9..bfd10ee 100644 --- a/devise-async.gemspec +++ b/devise-async.gemspec @@ -19,11 +19,8 @@ Gem::Specification.new do |gem| gem.add_runtime_dependency 'devise', '>= 4.0' - gem.add_runtime_dependency 'activejob', '>= 5.0' + gem.add_runtime_dependency 'activejob', '>= 4.2' - gem.add_development_dependency 'activerecord', '>= 5.0' - gem.add_development_dependency 'actionpack', '>= 5.0' - gem.add_development_dependency 'actionmailer', '>= 5.0' gem.add_development_dependency 'rspec', '~> 3.6' gem.add_development_dependency 'rspec-rails', '~> 3.6' gem.add_development_dependency 'sqlite3', '~> 1.3' From db7c864ae7d0dd795859022f56a5455b53075d2c Mon Sep 17 00:00:00 2001 From: Joseph Chen Date: Mon, 20 Sep 2021 10:24:47 -0700 Subject: [PATCH 2/4] Allow queue name to be set if using Rails 5 or greater. --- lib/devise/async.rb | 4 ++++ lib/devise/async/model.rb | 9 ++++++++- spec/devise/async_spec.rb | 8 ++++++++ 3 files changed, 20 insertions(+), 1 deletion(-) diff --git a/lib/devise/async.rb b/lib/devise/async.rb index 55dc51a..b268aa5 100644 --- a/lib/devise/async.rb +++ b/lib/devise/async.rb @@ -8,6 +8,10 @@ module Async mattr_accessor :enabled @@enabled = true + # Defines the queue in which the background job will be enqueued. + mattr_accessor :queue + @@queue = nil + # Allow configuring Devise::Async with a block # # Example: diff --git a/lib/devise/async/model.rb b/lib/devise/async/model.rb index 0d7c208..6c6038d 100644 --- a/lib/devise/async/model.rb +++ b/lib/devise/async/model.rb @@ -1,3 +1,5 @@ +require 'action_mailer' + module Devise module Models module Async @@ -50,7 +52,12 @@ def devise_pending_notifications private def deliver_mail_later(notification, model, args) - devise_mailer.send(notification, model, *args).deliver_later + if ActionMailer::Base.method_defined?(:deliver_later_queue_name) + # Rails 5 introduced the option of setting the mailer queue name. + devise_mailer.send(notification, model, *args).deliver_later(queue: Devise::Async.queue || ActionMailer::Base.deliver_later_queue_name) + else + devise_mailer.send(notification, model, *args).deliver_later + end end end end diff --git a/spec/devise/async_spec.rb b/spec/devise/async_spec.rb index 54d89e8..cdc0cfc 100644 --- a/spec/devise/async_spec.rb +++ b/spec/devise/async_spec.rb @@ -10,4 +10,12 @@ expect(described_class.enabled).to eq(false) described_class.enabled = initial_enabled end + + it 'stores queue config' do + initial_queue = described_class.queue + + described_class.queue = :critical + expect(described_class.queue).to eq(:critical) + described_class.queue = initial_queue + end end From 552da712188d1d589682a17bbdbd028878f2f2c5 Mon Sep 17 00:00:00 2001 From: Joseph Chen Date: Mon, 20 Sep 2021 11:58:54 -0700 Subject: [PATCH 3/4] Update travis testing matrix --- .travis.yml | 35 +++++++++++++++++++++++++++++++---- Gemfile | 21 +++++++++------------ README.md | 2 +- devise-async.gemspec | 2 +- 4 files changed, 42 insertions(+), 18 deletions(-) diff --git a/.travis.yml b/.travis.yml index 8ca540b..bb0155a 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,11 +1,38 @@ language: ruby + rvm: - - 2.2.5 - - 2.3.1 - - 2.4.1 + - 2.2.10 + - 2.5.9 + - 2.7.4 + - 3.0.0 + env: - RAILS_VERSION=4.2 - - RAILS_VERSION=5.0 + - RAILS_VERSION=5.2 + - RAILS_VERSION=6.0 + - RAILS_VERSION=6.1 + +jobs: + exclude: + - rvm: 2.2.10 + env: RAILS_VERSION=5.2 + - rvm: 2.2.10 + env: RAILS_VERSION=6.0 + - rvm: 2.2.10 + env: RAILS_VERSION=6.1 + + - rvm: 2.5.9 + env: RAILS_VERSION=4.2 + + - rvm: 2.7.4 + env: RAILS_VERSION=4.2 + + - rvm: 3.0.0 + env: RAILS_VERSION=4.2 + - rvm: 3.0.0 + env: RAILS_VERSION=5.2 + - rvm: 3.0.0 + env: RAILS_VERSION=6.0 before_install: - gem install bundler -v 1.15 diff --git a/Gemfile b/Gemfile index d1d63da..e41a73b 100644 --- a/Gemfile +++ b/Gemfile @@ -3,17 +3,14 @@ source 'https://rubygems.org' # Specify your gem's dependencies in devise-async.gemspec gemspec -case version = ENV['RAILS_VERSION'] || "~> 5.0" -when /5/ - gem "activerecord", "~> 5.0" - gem "actionpack", "~> 5.0" - gem "actionmailer", "~> 5.0" -when /4.2/ - gem "activerecord", "~> 4.2" - gem "actionpack", "~> 4.2" - gem "actionmailer", "~> 4.2" +version = ENV['RAILS_VERSION'] || "~> 6.1" + +gem "activerecord", version +gem "actionpack", version +gem "actionmailer", version + +if version =~ /^4/ + gem 'sqlite3', '~> 1.3' else - gem "activerecord", version - gem "actionpack", version - gem "actionmailer", version + gem 'sqlite3', '~> 1.4' end diff --git a/README.md b/README.md index 5c4d77c..7528adb 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # Devise Async -[![Tag](https://img.shields.io/github/tag/mhfs/devise-async.svg?style=flat-square)](https://github.com/mhfs/devise-async/releases) [![Build Status](https://img.shields.io/travis/mhfs/devise-async.svg?style=flat-square)](https://travis-ci.org/mhfs/devise-async) [![Code Climate](https://img.shields.io/codeclimate/github/mhfs/devise-async.svg?style=flat-square)](https://codeclimate.com/github/mhfs/devise-async) +[![Build Status](https://app.travis-ci.com/joe1chen/devise-async.svg?branch=master)](https://app.travis-ci.com/github/joe1chen/devise-async) Devise Async provides an easy way to configure Devise to send its emails asynchronously using ActiveJob. diff --git a/devise-async.gemspec b/devise-async.gemspec index bfd10ee..e8a551e 100644 --- a/devise-async.gemspec +++ b/devise-async.gemspec @@ -23,6 +23,6 @@ Gem::Specification.new do |gem| gem.add_development_dependency 'rspec', '~> 3.6' gem.add_development_dependency 'rspec-rails', '~> 3.6' - gem.add_development_dependency 'sqlite3', '~> 1.3' + gem.add_development_dependency 'sqlite3' gem.add_development_dependency 'pry' end From 8b987710fc4375a658439176212cc704a62e9377 Mon Sep 17 00:00:00 2001 From: Joseph Chen Date: Mon, 20 Sep 2021 16:55:08 -0700 Subject: [PATCH 4/4] Update sqlite3 dependency for Rails 4.2 and 5.2 --- Gemfile | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Gemfile b/Gemfile index e41a73b..fa1af8d 100644 --- a/Gemfile +++ b/Gemfile @@ -10,7 +10,9 @@ gem "actionpack", version gem "actionmailer", version if version =~ /^4/ - gem 'sqlite3', '~> 1.3' + gem 'sqlite3', '~> 1.3.6' +elsif version =~ /^5.2/ + gem 'sqlite3', '~> 1.3.6' else gem 'sqlite3', '~> 1.4' end