devise-async 0.9.0 → 0.10.1.alpha

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,3 +1,5 @@
1
1
  language: ruby
2
2
  rvm:
3
3
  - 1.9.3
4
+ services:
5
+ - redis-server
@@ -1,5 +1,15 @@
1
1
  ## Unreleased
2
2
 
3
+ ## 0.10.0-alpha
4
+
5
+ * Backburner support (jandudulski)
6
+ * Sucker Punch support (kmayer)
7
+ * Que support (marshall-lee)
8
+ * Handle `deliver_now` in preparation for Rails 5 (barelyknown)
9
+ * Option to set a priority for DJ and Backburner (mkon)
10
+ * The locale is remembered before an asynchronous task is run (baschtl)
11
+ * Fixed a usage of `try` that appeared in connection with Rails 4 (baschtl)
12
+
3
13
  ## 0.9.0
4
14
 
5
15
  * Multiple mailers support (baschtl)
data/README.md CHANGED
@@ -1,4 +1,6 @@
1
- # Devise Async [![Build Status](https://secure.travis-ci.org/mhfs/devise-async.png)](http://travis-ci.org/mhfs/devise-async)
1
+ # Devise Async
2
+
3
+ [![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)
2
4
 
3
5
  Devise Async provides an easy way to configure Devise to send its emails asynchronously using your preferred queuing backend.
4
6
 
@@ -9,6 +11,9 @@ Supported backends:
9
11
  * Delayed::Job
10
12
  * QueueClassic
11
13
  * Torquebox
14
+ * Backburner
15
+ * Que
16
+ * SuckerPunch
12
17
 
13
18
  ## Installation
14
19
 
@@ -39,7 +44,7 @@ end
39
44
  Set your queuing backend by creating `config/initializers/devise_async.rb`:
40
45
 
41
46
  ```ruby
42
- # Supported options: :resque, :sidekiq, :delayed_job, :queue_classic, :torquebox
47
+ # Supported options: :resque, :sidekiq, :delayed_job, :queue_classic, :torquebox, :backburner, :que, :sucker_punch
43
48
  Devise::Async.backend = :resque
44
49
  ```
45
50
 
@@ -73,6 +78,16 @@ Defaults to :mailer.
73
78
  Devise::Async.queue = :my_custom_queue
74
79
  ```
75
80
 
81
+ ### Custom priority
82
+
83
+ You can specify a custom priority for created background jobs in Devise or Backburner.
84
+ If no value is specified, jobs will be enqueued with whatever default priority is configured in Devise or Backburner.
85
+
86
+ ```ruby
87
+ # config/initializers/devise_async.rb
88
+ Devise::Async.priority = 10
89
+ ```
90
+
76
91
  ### Setup via block
77
92
 
78
93
  To avoid repeating `Devise::Async` in the initializer file you can use the block syntax
@@ -4,8 +4,8 @@ require File.expand_path('../lib/devise/async/version', __FILE__)
4
4
  Gem::Specification.new do |gem|
5
5
  gem.authors = ["Marcelo Silveira"]
6
6
  gem.email = ["marcelo@mhfs.com.br"]
7
- gem.description = %q{Send Devise's emails in background. Supports Resque, Sidekiq, Delayed::Job and QueueClassic.}
8
- gem.summary = %q{Devise Async provides an easy way to configure Devise to send its emails asynchronously using your preferred queuing backend. It supports Resque, Sidekiq, Delayed::Job and QueueClassic.}
7
+ gem.description = %q{Send Devise's emails in background. Supports Backburner, Resque, Sidekiq, Delayed::Job, QueueClassic, Que, Sucker Punch and Torquebox.}
8
+ gem.summary = %q{Devise Async provides an easy way to configure Devise to send its emails asynchronously using your preferred queuing backend. It supports Backburner, Resque, Sidekiq, Delayed::Job, QueueClassic, Que, Sucker Punch and Torquebox.}
9
9
  gem.homepage = "https://github.com/mhfs/devise-async/"
10
10
 
11
11
  gem.files = `git ls-files`.split($\)
@@ -22,10 +22,13 @@ Gem::Specification.new do |gem|
22
22
  gem.add_development_dependency "actionmailer", ">= 3.2"
23
23
  gem.add_development_dependency "sqlite3", "~> 1.3"
24
24
  gem.add_development_dependency "resque", "~> 1.20"
25
- gem.add_development_dependency "sidekiq", "~> 1.2"
25
+ gem.add_development_dependency "sidekiq", "~> 2.17"
26
26
  gem.add_development_dependency "delayed_job_active_record", "~> 0.3"
27
27
  gem.add_development_dependency "queue_classic", "~> 2.0"
28
+ gem.add_development_dependency "backburner", "~> 0.4"
28
29
  gem.add_development_dependency "mocha", "~> 0.11"
29
30
  gem.add_development_dependency "minitest", "~> 3.0"
30
31
  gem.add_development_dependency "torquebox-no-op", "~> 2.3"
32
+ gem.add_development_dependency "sucker_punch", "~> 1.0.5"
33
+ gem.add_development_dependency "que", "~> 0.8"
31
34
  end
@@ -9,11 +9,14 @@ module Devise
9
9
 
10
10
  module Backend
11
11
  autoload :Base, "devise/async/backend/base"
12
+ autoload :Backburner, "devise/async/backend/backburner"
12
13
  autoload :Resque, "devise/async/backend/resque"
13
14
  autoload :Sidekiq, "devise/async/backend/sidekiq"
14
15
  autoload :DelayedJob, "devise/async/backend/delayed_job"
15
16
  autoload :QueueClassic, "devise/async/backend/queue_classic"
16
17
  autoload :Torquebox, "devise/async/backend/torquebox"
18
+ autoload :SuckerPunch, "devise/async/backend/sucker_punch"
19
+ autoload :Que, "devise/async/backend/que"
17
20
  end
18
21
 
19
22
  # Defines the queue backend to be used. Resque by default.
@@ -24,6 +27,10 @@ module Devise
24
27
  mattr_accessor :queue
25
28
  @@queue = :mailer
26
29
 
30
+ # Defines the priority in which the background job will be enqueued. Defaults to the default of the backend you are using.
31
+ mattr_accessor :priority
32
+ @@priority = nil
33
+
27
34
  # Defines the enabled configuration that if set to false the emails will be sent synchronously
28
35
  mattr_accessor :enabled
29
36
  @@enabled = true
@@ -0,0 +1,25 @@
1
+ module Devise
2
+ module Async
3
+ module Backend
4
+ class Backburner < Base
5
+
6
+ def self.enqueue(*args)
7
+ args.unshift(self)
8
+ ::Backburner.enqueue(*args)
9
+ end
10
+
11
+ def self.perform(*args)
12
+ new.perform(*args)
13
+ end
14
+
15
+ def self.queue
16
+ Devise::Async.queue
17
+ end
18
+
19
+ def self.queue_priority
20
+ Devise::Async.priority.nil? ? ::Backburner.configuration.default_priority : Devise::Async.priority
21
+ end
22
+ end
23
+ end
24
+ end
25
+ end
@@ -10,17 +10,39 @@ module Devise
10
10
  #
11
11
  # It uses `orm_adapter` API to fetch the record in order to enforce
12
12
  # compatibility among diferent ORMs.
13
+ #
14
+ # This method is executed within the scope of the locale of
15
+ # the calling thread.
13
16
  def perform(method, resource_class, resource_id, *args)
14
- resource = resource_class.constantize.to_adapter.get!(resource_id)
15
- args[-1] = args.last.symbolize_keys if args.last.is_a?(Hash)
16
- mailer_class(resource).send(method, resource, *args).deliver
17
+ I18n.with_locale locale_from_args(args) do
18
+ resource = resource_class.constantize.to_adapter.get!(resource_id)
19
+ args[-1] = args.last.symbolize_keys if args.last.is_a?(Hash)
20
+ mailer = mailer_class(resource).send(method, resource, *args)
21
+ mailer.send(deliver_method(mailer))
22
+ end
17
23
  end
18
24
 
19
25
  private
20
26
 
21
27
  def mailer_class(resource = nil)
22
- @mailer_class ||= resource.try(:devise_mailer) || Devise.mailer
28
+ @mailer_class ||= resource.send(:devise_mailer) || Devise.mailer
29
+ end
30
+
31
+ def locale_from_args(args)
32
+ args_last = args.last
33
+ args_last.delete('locale') if args_last.is_a?(Hash)
23
34
  end
35
+
36
+ # Use #deliver_now if supported, otherwise falls back to #deliver.
37
+ # Added in preparation for the planned removal of #deliver in Rails 5.
38
+ def deliver_method(mailer)
39
+ if mailer.respond_to?(:deliver_now)
40
+ :deliver_now
41
+ else
42
+ :deliver
43
+ end
44
+ end
45
+
24
46
  end
25
47
  end
26
48
  end
@@ -3,7 +3,11 @@ module Devise
3
3
  module Backend
4
4
  class DelayedJob < Base
5
5
  def self.enqueue(*args)
6
- new.delay(:queue => Devise::Async.queue).perform(*args)
6
+ new.delay(:queue => Devise::Async.queue, :priority => priority).perform(*args)
7
+ end
8
+
9
+ def self.priority
10
+ Devise::Async.priority.nil? ? Delayed::Worker.default_priority : Devise::Async.priority
7
11
  end
8
12
  end
9
13
  end
@@ -0,0 +1,19 @@
1
+ module Devise
2
+ module Async
3
+ module Backend
4
+ class Que < Base
5
+ class Job < ::Que::Job
6
+ @queue = Devise::Async.queue
7
+
8
+ def run(args)
9
+ Backend::Que.new.perform(*args)
10
+ end
11
+ end
12
+
13
+ def self.enqueue(*args)
14
+ Job.enqueue(args)
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,23 @@
1
+ require "sucker_punch"
2
+
3
+ module Devise
4
+ module Async
5
+ module Backend
6
+ class SuckerPunch < Base
7
+ include ::SuckerPunch::Job
8
+
9
+ def self.enqueue(*args)
10
+ new.async.perform(*args)
11
+ end
12
+
13
+ # Return the connection to the pool after we're done with it
14
+ # see: https://github.com/brandonhilkert/sucker_punch#usage
15
+ def perform(method, resource_class, resource_id, *args)
16
+ ActiveRecord::Base.connection_pool.with_connection do
17
+ super
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
23
+ end
@@ -27,6 +27,12 @@ module Devise
27
27
  def send_devise_notification(notification, *args)
28
28
  return super unless Devise::Async.enabled
29
29
 
30
+ # The current locale has to be remembered until the actual sending
31
+ # of an email because it is scoped to the current thread. Hence,
32
+ # using asynchronous mechanisms that use another thread to send an
33
+ # email the currently used locale will be gone later.
34
+ args = args_with_current_locale(args)
35
+
30
36
  # If the record is dirty we keep pending notifications to be enqueued
31
37
  # by the callback and avoid before commit job processing.
32
38
  if changed?
@@ -51,6 +57,23 @@ module Devise
51
57
  def devise_pending_notifications
52
58
  @devise_pending_notifications ||= []
53
59
  end
60
+
61
+ private
62
+
63
+ def args_with_current_locale(args)
64
+ # The default_locale is taken in any case. Hence, the args do not have
65
+ # to be adapted if default_locale and current locale are equal.
66
+ args = add_current_locale_to_args(args) if I18n.locale != I18n.default_locale
67
+ args
68
+ end
69
+
70
+ def add_current_locale_to_args(args)
71
+ # Devise expects a hash as the last parameter for Mailer methods.
72
+ opts = args.last.is_a?(Hash) ? args.pop : {}
73
+ opts['locale'] = I18n.locale
74
+ args.push(opts)
75
+ end
76
+
54
77
  end
55
78
  end
56
79
  end
@@ -1,5 +1,5 @@
1
1
  module Devise
2
2
  module Async
3
- VERSION = "0.9.0"
3
+ VERSION = "0.10.1.alpha"
4
4
  end
5
5
  end
@@ -0,0 +1,33 @@
1
+ require "test_helper"
2
+
3
+ module Devise
4
+ module Async
5
+ module Backend
6
+ describe "Backburner" do
7
+ it "enqueues job" do
8
+ ::Backburner.expects(:enqueue).with(Backburner, :mailer_method, "User", 123, {})
9
+ Backburner.enqueue(:mailer_method, "User", 123, {})
10
+ end
11
+
12
+ it "delegates to devise mailer when delivering" do
13
+ user = create_user
14
+ ActionMailer::Base.deliveries = []
15
+ Backend::Backburner.perform(:confirmation_instructions, "User", user.id, {})
16
+ ActionMailer::Base.deliveries.size.must_equal 1
17
+ end
18
+
19
+ describe ".queue_priority" do
20
+ it "returns the right priority when set" do
21
+ Devise::Async.priority = 15
22
+ Backburner.queue_priority.must_equal 15
23
+ Devise::Async.priority = nil
24
+ end
25
+
26
+ it "returns default priority when no priority is set" do
27
+ Backburner.queue_priority.must_equal ::Backburner.configuration.default_priority
28
+ end
29
+ end
30
+ end
31
+ end
32
+ end
33
+ end
@@ -3,15 +3,33 @@ require "test_helper"
3
3
  module Devise
4
4
  module Async
5
5
  module Backend
6
+
6
7
  describe "Base" do
7
8
 
8
- it "delegates to configured mailer" do
9
+ before do
9
10
  Devise.mailer = "MyMailer"
10
- user = create_user
11
- mailer_instance = mock(:deliver => true)
11
+ @user = create_user
12
+ end
12
13
 
13
- MyMailer.expects(:confirmation_instructions).once.returns(mailer_instance)
14
- Base.new.perform(:confirmation_instructions, "User", user.id, {})
14
+ after do
15
+ Devise.mailer = "Devise::Mailer"
16
+ end
17
+
18
+ it "delegates to configured mailer" do
19
+ @mailer_instance = mock(:deliver => true)
20
+
21
+ MyMailer.expects(:confirmation_instructions).once.returns(@mailer_instance)
22
+ Base.new.perform(:confirmation_instructions, "User", @user.id, {})
23
+ end
24
+
25
+ it "executes within the locale scope if a locale is given via args" do
26
+ I18n.expects(:with_locale).once.with(:de)
27
+ Base.new.perform(:confirmation_instructions, "User", @user.id, { 'locale' => :de })
28
+ end
29
+
30
+ it "does not execute within the locale scope if no locale is given via args" do
31
+ I18n.expects(:"locale=").never
32
+ Base.new.perform(:confirmation_instructions, "User", @user.id, {})
15
33
  end
16
34
 
17
35
  it "delegates to model configured mailer" do
@@ -22,6 +40,27 @@ module Devise
22
40
  Base.new.perform(:confirmation_instructions, "UserWithMailer", user.id, {})
23
41
  end
24
42
 
43
+ describe "the delivery method" do
44
+ before do
45
+ Devise.mailer = "MyMailer"
46
+ @user = create_user
47
+ end
48
+
49
+ it "uses #deliver_now when possible" do
50
+ mailer_instance = mock(:deliver_now => true)
51
+
52
+ MyMailer.expects(:confirmation_instructions).once.returns(mailer_instance)
53
+ Base.new.perform(:confirmation_instructions, "User", @user.id, {})
54
+ end
55
+
56
+ it "uses #deliver otherwise" do
57
+ mailer_instance = mock(:deliver => true)
58
+
59
+ MyMailer.expects(:confirmation_instructions).once.returns(mailer_instance)
60
+ Base.new.perform(:confirmation_instructions, "User", @user.id, {})
61
+ end
62
+ end
63
+
25
64
  after do
26
65
  Devise.mailer = "Devise::Mailer"
27
66
  end
@@ -7,7 +7,7 @@ module Devise
7
7
  it "enqueues job" do
8
8
  delayed_instance = mock()
9
9
  delayed_instance.expects(:perform).once.with(:mailer_method, "User", 123, {})
10
- DelayedJob.any_instance.expects(:delay).once.returns(delayed_instance)
10
+ DelayedJob.any_instance.expects(:delay).with(:queue => Devise::Async.queue, :priority => DelayedJob.priority).once.returns(delayed_instance)
11
11
 
12
12
  DelayedJob.enqueue(:mailer_method, "User", 123, {})
13
13
  end
@@ -18,6 +18,18 @@ module Devise
18
18
  Backend::DelayedJob.new.perform(:confirmation_instructions, "User", user.id, {})
19
19
  ActionMailer::Base.deliveries.size.must_equal 1
20
20
  end
21
+
22
+ describe ".priority" do
23
+ it "returns it when the priority is set" do
24
+ Devise::Async.priority = 15
25
+ DelayedJob.priority.must_equal 15
26
+ Devise::Async.priority = nil
27
+ end
28
+
29
+ it "returns the default DJ priority when the priority is not set it" do
30
+ DelayedJob.priority.must_equal Delayed::Worker.default_priority
31
+ end
32
+ end
21
33
  end
22
34
  end
23
35
  end
@@ -0,0 +1,21 @@
1
+ require "test_helper"
2
+
3
+ module Devise
4
+ module Async
5
+ module Backend
6
+ describe "Que" do
7
+ it "enqueues job" do
8
+ Que::Job.expects(:enqueue).with([:mailer_method, "User", 123, {}])
9
+ Que.enqueue(:mailer_method, "User", 123, {})
10
+ end
11
+
12
+ it "delegates to devise mailer when delivering" do
13
+ user = create_user
14
+ ActionMailer::Base.deliveries = []
15
+ Backend::Que.enqueue(:confirmation_instructions, "User", user.id, {})
16
+ ActionMailer::Base.deliveries.size.must_equal 1
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,21 @@
1
+ require "test_helper"
2
+
3
+ module Devise
4
+ module Async
5
+ module Backend
6
+ describe "SuckerPunch" do
7
+ it "enqueus the job" do
8
+ SuckerPunch.any_instance.expects(:perform).once.with(:mailer_method, "User", 123, {})
9
+ SuckerPunch.enqueue(:mailer_method, "User", 123, {})
10
+ end
11
+
12
+ it "delegates to devise mailer when delivering" do
13
+ user = create_user
14
+ ActionMailer::Base.deliveries = []
15
+ SuckerPunch.new.perform(:confirmation_instructions, "User", user.id, {})
16
+ ActionMailer::Base.deliveries.size.must_equal 1
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
@@ -11,6 +11,10 @@ module Devise
11
11
  Backend.for(:sidekiq).must_equal Backend::Sidekiq
12
12
  end
13
13
 
14
+ it "gives backburner as the backend" do
15
+ Backend.for(:backburner).must_equal Backend::Backburner
16
+ end
17
+
14
18
  it "gives delayed job as the backend" do
15
19
  Backend.for(:delayed_job).must_equal Backend::DelayedJob
16
20
  end
@@ -19,6 +23,10 @@ module Devise
19
23
  Backend.for(:queue_classic).must_equal Backend::QueueClassic
20
24
  end
21
25
 
26
+ it "gives sucker punch as the backend" do
27
+ Backend.for(:sucker_punch).must_equal Backend::SuckerPunch
28
+ end
29
+
22
30
  it "alerts about unsupported backend" do
23
31
  assert_raises ArgumentError do
24
32
  Backend.for(:unsupported_backend)
@@ -71,6 +71,30 @@ module Devise
71
71
  admin.send(:devise_pending_notifications).must_equal []
72
72
  Worker.expects(:enqueue).never
73
73
  end
74
+
75
+ describe "custom locale set" do
76
+
77
+ # Set a custom locale
78
+ before { I18n.locale = :de }
79
+
80
+ # locale == nil indicates the usage of the default_locale
81
+ after { I18n.locale = nil }
82
+
83
+ it "should set the current locale to the args" do
84
+ admin = create_admin
85
+ Worker.expects(:enqueue).with(:confirmation_instructions, "Admin", admin.id.to_s, instance_of(String), { 'locale' => :de })
86
+ admin.send_confirmation_instructions
87
+ end
88
+ end
89
+
90
+ describe "default locale set" do
91
+
92
+ it "should not set the current locale to the args" do
93
+ admin = create_admin
94
+ Worker.expects(:enqueue).with(:confirmation_instructions, "Admin", admin.id.to_s, instance_of(String), {})
95
+ admin.send_confirmation_instructions
96
+ end
97
+ end
74
98
  end
75
99
  end
76
100
  end
@@ -17,6 +17,13 @@ module Devise
17
17
  Worker.enqueue(:mailer_method, "User", 123, {})
18
18
  end
19
19
 
20
+ it "enqueues job using the backburner backend" do
21
+ Devise::Async.backend = :backburner
22
+
23
+ Backend::Backburner.expects(:enqueue).with(:mailer_method, "User", 123, {})
24
+ Worker.enqueue(:mailer_method, "User", 123, {})
25
+ end
26
+
20
27
  it "enqueues job using the delayed job backend" do
21
28
  Devise::Async.backend = :delayed_job
22
29
 
@@ -30,6 +37,20 @@ module Devise
30
37
  Backend::QueueClassic.expects(:enqueue).with(:mailer_method, "User", 123, {})
31
38
  Worker.enqueue(:mailer_method, "User", 123, {})
32
39
  end
40
+
41
+ it "enqueues job using the sucker punch backend" do
42
+ Devise::Async.backend = :sucker_punch
43
+
44
+ Backend::SuckerPunch.expects(:enqueue).with(:mailer_method, "User", 123, {})
45
+ Worker.enqueue(:mailer_method, "User", 123, {})
46
+ end
47
+
48
+ it "enqueues job using the que backend" do
49
+ Devise::Async.backend = :que
50
+
51
+ Backend::Que.expects(:enqueue).with(:mailer_method, "User", 123, {})
52
+ Worker.enqueue(:mailer_method, "User", 123, {})
53
+ end
33
54
  end
34
55
  end
35
56
  end
@@ -2,6 +2,11 @@ require "test_helper"
2
2
 
3
3
  module Devise
4
4
  describe "Async" do
5
+
6
+ after do
7
+ Async.backend = :resque
8
+ end
9
+
5
10
  it "yields self when setup is called" do
6
11
  Async.setup { |config| config.must_equal Async }
7
12
  end
@@ -16,8 +21,11 @@ module Devise
16
21
  Async.backend.must_equal false
17
22
  end
18
23
 
19
- after do
20
- Async.backend = :resque
24
+ it "stores priority config" do
25
+ Async.priority = 15
26
+ Async.priority.must_equal 15
27
+ Async.priority = nil
21
28
  end
29
+
22
30
  end
23
31
  end
@@ -5,14 +5,20 @@ require "minitest/spec"
5
5
  require "minitest/mock"
6
6
  require "mocha/setup"
7
7
 
8
+ require "action_controller"
9
+
8
10
  require "devise"
9
11
  require "devise/async"
10
12
  require "rails/all"
11
13
  require "resque"
12
14
  require "sidekiq"
15
+ require "backburner"
13
16
  require "delayed_job_active_record"
14
17
  require "sidekiq/testing"
15
18
  require "torquebox-no-op"
19
+ require "sucker_punch/testing/inline"
20
+ require "que"
21
+ require "queue_classic"
16
22
 
17
23
  require "support/rails_app"
18
24
  require "support/test_helpers"
@@ -21,3 +27,5 @@ require "support/my_mailer"
21
27
  include TestHelpers
22
28
 
23
29
  load File.dirname(__FILE__) + "/support/rails_app/db/schema.rb"
30
+
31
+ I18n.enforce_available_locales = false
metadata CHANGED
@@ -1,18 +1,20 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: devise-async
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.0
4
+ version: 0.10.1.alpha
5
+ prerelease: 7
5
6
  platform: ruby
6
7
  authors:
7
8
  - Marcelo Silveira
8
9
  autorequire:
9
10
  bindir: bin
10
11
  cert_chain: []
11
- date: 2013-11-19 00:00:00.000000000 Z
12
+ date: 2015-05-04 00:00:00.000000000 Z
12
13
  dependencies:
13
14
  - !ruby/object:Gem::Dependency
14
15
  name: devise
15
16
  requirement: !ruby/object:Gem::Requirement
17
+ none: false
16
18
  requirements:
17
19
  - - ~>
18
20
  - !ruby/object:Gem::Version
@@ -20,6 +22,7 @@ dependencies:
20
22
  type: :runtime
21
23
  prerelease: false
22
24
  version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
23
26
  requirements:
24
27
  - - ~>
25
28
  - !ruby/object:Gem::Version
@@ -27,48 +30,55 @@ dependencies:
27
30
  - !ruby/object:Gem::Dependency
28
31
  name: activerecord
29
32
  requirement: !ruby/object:Gem::Requirement
33
+ none: false
30
34
  requirements:
31
- - - '>='
35
+ - - ! '>='
32
36
  - !ruby/object:Gem::Version
33
37
  version: '3.2'
34
38
  type: :development
35
39
  prerelease: false
36
40
  version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
37
42
  requirements:
38
- - - '>='
43
+ - - ! '>='
39
44
  - !ruby/object:Gem::Version
40
45
  version: '3.2'
41
46
  - !ruby/object:Gem::Dependency
42
47
  name: actionpack
43
48
  requirement: !ruby/object:Gem::Requirement
49
+ none: false
44
50
  requirements:
45
- - - '>='
51
+ - - ! '>='
46
52
  - !ruby/object:Gem::Version
47
53
  version: '3.2'
48
54
  type: :development
49
55
  prerelease: false
50
56
  version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
51
58
  requirements:
52
- - - '>='
59
+ - - ! '>='
53
60
  - !ruby/object:Gem::Version
54
61
  version: '3.2'
55
62
  - !ruby/object:Gem::Dependency
56
63
  name: actionmailer
57
64
  requirement: !ruby/object:Gem::Requirement
65
+ none: false
58
66
  requirements:
59
- - - '>='
67
+ - - ! '>='
60
68
  - !ruby/object:Gem::Version
61
69
  version: '3.2'
62
70
  type: :development
63
71
  prerelease: false
64
72
  version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
65
74
  requirements:
66
- - - '>='
75
+ - - ! '>='
67
76
  - !ruby/object:Gem::Version
68
77
  version: '3.2'
69
78
  - !ruby/object:Gem::Dependency
70
79
  name: sqlite3
71
80
  requirement: !ruby/object:Gem::Requirement
81
+ none: false
72
82
  requirements:
73
83
  - - ~>
74
84
  - !ruby/object:Gem::Version
@@ -76,6 +86,7 @@ dependencies:
76
86
  type: :development
77
87
  prerelease: false
78
88
  version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
79
90
  requirements:
80
91
  - - ~>
81
92
  - !ruby/object:Gem::Version
@@ -83,6 +94,7 @@ dependencies:
83
94
  - !ruby/object:Gem::Dependency
84
95
  name: resque
85
96
  requirement: !ruby/object:Gem::Requirement
97
+ none: false
86
98
  requirements:
87
99
  - - ~>
88
100
  - !ruby/object:Gem::Version
@@ -90,6 +102,7 @@ dependencies:
90
102
  type: :development
91
103
  prerelease: false
92
104
  version_requirements: !ruby/object:Gem::Requirement
105
+ none: false
93
106
  requirements:
94
107
  - - ~>
95
108
  - !ruby/object:Gem::Version
@@ -97,20 +110,23 @@ dependencies:
97
110
  - !ruby/object:Gem::Dependency
98
111
  name: sidekiq
99
112
  requirement: !ruby/object:Gem::Requirement
113
+ none: false
100
114
  requirements:
101
115
  - - ~>
102
116
  - !ruby/object:Gem::Version
103
- version: '1.2'
117
+ version: '2.17'
104
118
  type: :development
105
119
  prerelease: false
106
120
  version_requirements: !ruby/object:Gem::Requirement
121
+ none: false
107
122
  requirements:
108
123
  - - ~>
109
124
  - !ruby/object:Gem::Version
110
- version: '1.2'
125
+ version: '2.17'
111
126
  - !ruby/object:Gem::Dependency
112
127
  name: delayed_job_active_record
113
128
  requirement: !ruby/object:Gem::Requirement
129
+ none: false
114
130
  requirements:
115
131
  - - ~>
116
132
  - !ruby/object:Gem::Version
@@ -118,6 +134,7 @@ dependencies:
118
134
  type: :development
119
135
  prerelease: false
120
136
  version_requirements: !ruby/object:Gem::Requirement
137
+ none: false
121
138
  requirements:
122
139
  - - ~>
123
140
  - !ruby/object:Gem::Version
@@ -125,6 +142,7 @@ dependencies:
125
142
  - !ruby/object:Gem::Dependency
126
143
  name: queue_classic
127
144
  requirement: !ruby/object:Gem::Requirement
145
+ none: false
128
146
  requirements:
129
147
  - - ~>
130
148
  - !ruby/object:Gem::Version
@@ -132,13 +150,31 @@ dependencies:
132
150
  type: :development
133
151
  prerelease: false
134
152
  version_requirements: !ruby/object:Gem::Requirement
153
+ none: false
135
154
  requirements:
136
155
  - - ~>
137
156
  - !ruby/object:Gem::Version
138
157
  version: '2.0'
158
+ - !ruby/object:Gem::Dependency
159
+ name: backburner
160
+ requirement: !ruby/object:Gem::Requirement
161
+ none: false
162
+ requirements:
163
+ - - ~>
164
+ - !ruby/object:Gem::Version
165
+ version: '0.4'
166
+ type: :development
167
+ prerelease: false
168
+ version_requirements: !ruby/object:Gem::Requirement
169
+ none: false
170
+ requirements:
171
+ - - ~>
172
+ - !ruby/object:Gem::Version
173
+ version: '0.4'
139
174
  - !ruby/object:Gem::Dependency
140
175
  name: mocha
141
176
  requirement: !ruby/object:Gem::Requirement
177
+ none: false
142
178
  requirements:
143
179
  - - ~>
144
180
  - !ruby/object:Gem::Version
@@ -146,6 +182,7 @@ dependencies:
146
182
  type: :development
147
183
  prerelease: false
148
184
  version_requirements: !ruby/object:Gem::Requirement
185
+ none: false
149
186
  requirements:
150
187
  - - ~>
151
188
  - !ruby/object:Gem::Version
@@ -153,6 +190,7 @@ dependencies:
153
190
  - !ruby/object:Gem::Dependency
154
191
  name: minitest
155
192
  requirement: !ruby/object:Gem::Requirement
193
+ none: false
156
194
  requirements:
157
195
  - - ~>
158
196
  - !ruby/object:Gem::Version
@@ -160,6 +198,7 @@ dependencies:
160
198
  type: :development
161
199
  prerelease: false
162
200
  version_requirements: !ruby/object:Gem::Requirement
201
+ none: false
163
202
  requirements:
164
203
  - - ~>
165
204
  - !ruby/object:Gem::Version
@@ -167,6 +206,7 @@ dependencies:
167
206
  - !ruby/object:Gem::Dependency
168
207
  name: torquebox-no-op
169
208
  requirement: !ruby/object:Gem::Requirement
209
+ none: false
170
210
  requirements:
171
211
  - - ~>
172
212
  - !ruby/object:Gem::Version
@@ -174,12 +214,45 @@ dependencies:
174
214
  type: :development
175
215
  prerelease: false
176
216
  version_requirements: !ruby/object:Gem::Requirement
217
+ none: false
177
218
  requirements:
178
219
  - - ~>
179
220
  - !ruby/object:Gem::Version
180
221
  version: '2.3'
181
- description: Send Devise's emails in background. Supports Resque, Sidekiq, Delayed::Job
182
- and QueueClassic.
222
+ - !ruby/object:Gem::Dependency
223
+ name: sucker_punch
224
+ requirement: !ruby/object:Gem::Requirement
225
+ none: false
226
+ requirements:
227
+ - - ~>
228
+ - !ruby/object:Gem::Version
229
+ version: 1.0.5
230
+ type: :development
231
+ prerelease: false
232
+ version_requirements: !ruby/object:Gem::Requirement
233
+ none: false
234
+ requirements:
235
+ - - ~>
236
+ - !ruby/object:Gem::Version
237
+ version: 1.0.5
238
+ - !ruby/object:Gem::Dependency
239
+ name: que
240
+ requirement: !ruby/object:Gem::Requirement
241
+ none: false
242
+ requirements:
243
+ - - ~>
244
+ - !ruby/object:Gem::Version
245
+ version: '0.8'
246
+ type: :development
247
+ prerelease: false
248
+ version_requirements: !ruby/object:Gem::Requirement
249
+ none: false
250
+ requirements:
251
+ - - ~>
252
+ - !ruby/object:Gem::Version
253
+ version: '0.8'
254
+ description: Send Devise's emails in background. Supports Backburner, Resque, Sidekiq,
255
+ Delayed::Job, QueueClassic, Que, Sucker Punch and Torquebox.
183
256
  email:
184
257
  - marcelo@mhfs.com.br
185
258
  executables: []
@@ -197,20 +270,26 @@ files:
197
270
  - lib/devise-async.rb
198
271
  - lib/devise/async.rb
199
272
  - lib/devise/async/backend.rb
273
+ - lib/devise/async/backend/backburner.rb
200
274
  - lib/devise/async/backend/base.rb
201
275
  - lib/devise/async/backend/delayed_job.rb
276
+ - lib/devise/async/backend/que.rb
202
277
  - lib/devise/async/backend/queue_classic.rb
203
278
  - lib/devise/async/backend/resque.rb
204
279
  - lib/devise/async/backend/sidekiq.rb
280
+ - lib/devise/async/backend/sucker_punch.rb
205
281
  - lib/devise/async/backend/torquebox.rb
206
282
  - lib/devise/async/model.rb
207
283
  - lib/devise/async/version.rb
208
284
  - lib/devise/async/worker.rb
285
+ - test/devise/async/backend/backburner_test.rb
209
286
  - test/devise/async/backend/base_test.rb
210
287
  - test/devise/async/backend/delayed_job_test.rb
288
+ - test/devise/async/backend/que_test.rb
211
289
  - test/devise/async/backend/queue_classic_test.rb
212
290
  - test/devise/async/backend/resque_test.rb
213
291
  - test/devise/async/backend/sidekiq_test.rb
292
+ - test/devise/async/backend/sucker_punch_test.rb
214
293
  - test/devise/async/backend/torquebox_test.rb
215
294
  - test/devise/async/backend_test.rb
216
295
  - test/devise/async/model_test.rb
@@ -231,35 +310,39 @@ files:
231
310
  - test/test_helper.rb
232
311
  homepage: https://github.com/mhfs/devise-async/
233
312
  licenses: []
234
- metadata: {}
235
313
  post_install_message:
236
314
  rdoc_options: []
237
315
  require_paths:
238
316
  - lib
239
317
  required_ruby_version: !ruby/object:Gem::Requirement
318
+ none: false
240
319
  requirements:
241
- - - '>='
320
+ - - ! '>='
242
321
  - !ruby/object:Gem::Version
243
322
  version: '0'
244
323
  required_rubygems_version: !ruby/object:Gem::Requirement
324
+ none: false
245
325
  requirements:
246
- - - '>='
326
+ - - ! '>'
247
327
  - !ruby/object:Gem::Version
248
- version: '0'
328
+ version: 1.3.1
249
329
  requirements: []
250
330
  rubyforge_project:
251
- rubygems_version: 2.0.3
331
+ rubygems_version: 1.8.23
252
332
  signing_key:
253
- specification_version: 4
333
+ specification_version: 3
254
334
  summary: Devise Async provides an easy way to configure Devise to send its emails
255
- asynchronously using your preferred queuing backend. It supports Resque, Sidekiq,
256
- Delayed::Job and QueueClassic.
335
+ asynchronously using your preferred queuing backend. It supports Backburner, Resque,
336
+ Sidekiq, Delayed::Job, QueueClassic, Que, Sucker Punch and Torquebox.
257
337
  test_files:
338
+ - test/devise/async/backend/backburner_test.rb
258
339
  - test/devise/async/backend/base_test.rb
259
340
  - test/devise/async/backend/delayed_job_test.rb
341
+ - test/devise/async/backend/que_test.rb
260
342
  - test/devise/async/backend/queue_classic_test.rb
261
343
  - test/devise/async/backend/resque_test.rb
262
344
  - test/devise/async/backend/sidekiq_test.rb
345
+ - test/devise/async/backend/sucker_punch_test.rb
263
346
  - test/devise/async/backend/torquebox_test.rb
264
347
  - test/devise/async/backend_test.rb
265
348
  - test/devise/async/model_test.rb
checksums.yaml DELETED
@@ -1,7 +0,0 @@
1
- ---
2
- SHA1:
3
- metadata.gz: 0bc72ccc5171244615739769bf6b9fca485d6701
4
- data.tar.gz: 5ddee310635e35eaa7c892db50eaa5db3ab612dc
5
- SHA512:
6
- metadata.gz: 1bc76ed72a9a0c688cc820eda1089ceb730f46db902047f31c50f6673d0500ad05f382500280d320330a4be85b8941f9d3220a2654c4ed67d539a013ea57be69
7
- data.tar.gz: 9091df36bf6efe21894c93828f8f5e64865d72b8c12e4753ffe869c40581b1ebd311c619ca7a7d1b6c6f02cf994c08be5a3d18163fb6ee80a124714052b7381c