sidekiq_mailer 0.0.1 → 0.0.2

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.
@@ -12,36 +12,13 @@ class Sidekiq::Mailer::Proxy
12
12
  end
13
13
 
14
14
  def deliver
15
- params = {
16
- 'class' => Sidekiq::Mailer::Worker,
17
- 'args' => [@mailer_class.to_s, @method_name, *@args]
18
- }
19
- Sidekiq::Mailer::Worker.client_push(params.merge(@mailer_class.get_sidekiq_options))
15
+ return deliver! if Sidekiq::Mailer.excludes_current_environment?
16
+ Sidekiq::Mailer::Worker.client_push(to_sidekiq)
20
17
  end
21
18
 
22
- # def deliver_at(time)
23
- # return deliver! if environment_excluded?
24
-
25
- # unless resque.respond_to? :enqueue_at
26
- # raise "You need to install resque-scheduler to use deliver_at"
27
- # end
28
-
29
- # if @mailer_class.deliver?
30
- # resque.enqueue_at(time, @mailer_class, @method_name, *@args)
31
- # end
32
- # end
33
-
34
- # def deliver_in(time)
35
- # return deliver! if environment_excluded?
36
-
37
- # unless resque.respond_to? :enqueue_in
38
- # raise "You need to install resque-scheduler to use deliver_in"
39
- # end
40
-
41
- # if @mailer_class.deliver?
42
- # resque.enqueue_in(time, @mailer_class, @method_name, *@args)
43
- # end
44
- # end
19
+ def excluded_environment?
20
+ Sidekiq::Mailer.excludes_current_environment?
21
+ end
45
22
 
46
23
  def deliver!
47
24
  actual_message.deliver!
@@ -50,4 +27,12 @@ class Sidekiq::Mailer::Proxy
50
27
  def method_missing(method_name, *args)
51
28
  actual_message.send(method_name, *args)
52
29
  end
30
+
31
+ def to_sidekiq
32
+ params = {
33
+ 'class' => Sidekiq::Mailer::Worker,
34
+ 'args' => [@mailer_class.to_s, @method_name, *@args]
35
+ }
36
+ params.merge(@mailer_class.get_sidekiq_options)
37
+ end
53
38
  end
@@ -1,5 +1,5 @@
1
1
  module Sidekiq
2
2
  module Mailer
3
- VERSION = "0.0.1"
3
+ VERSION = "0.0.2"
4
4
  end
5
5
  end
@@ -4,6 +4,18 @@ require 'sidekiq_mailer/proxy'
4
4
 
5
5
  module Sidekiq
6
6
  module Mailer
7
+ def self.excluded_environments=(envs)
8
+ @@excluded_environments = [*envs].map { |e| e.to_sym }
9
+ end
10
+
11
+ def self.excluded_environments
12
+ @@excluded_environments
13
+ end
14
+
15
+ def self.excludes_current_environment?
16
+ !ActionMailer::Base.perform_deliveries || (excluded_environments && excluded_environments.include?(ENV['RAILS_ENV'].to_sym))
17
+ end
18
+
7
19
  def self.included(base)
8
20
  base.extend(ClassMethods)
9
21
  base.class_attribute :sidekiq_options_hash
@@ -27,6 +27,7 @@ end
27
27
 
28
28
  class SidekiqMailerTest < Test::Unit::TestCase
29
29
  def setup
30
+ Sidekiq::Mailer.excluded_environments = []
30
31
  ActionMailer::Base.deliveries.clear
31
32
  Sidekiq::Mailer::Worker.jobs.clear
32
33
  end
@@ -65,4 +66,11 @@ class SidekiqMailerTest < Test::Unit::TestCase
65
66
  Sidekiq::Mailer::Worker.new.perform('BasicMailer', 'welcome', 'test@test.com')
66
67
  assert_equal 1, ActionMailer::Base.deliveries.size
67
68
  end
69
+
70
+ def test_delivers_syncronously_if_running_in_a_excluded_environment
71
+ Sidekiq::Mailer.excluded_environments = [:test]
72
+ BasicMailer.welcome('test@test.com').deliver
73
+ assert_equal 0, Sidekiq::Mailer::Worker.jobs.size
74
+ assert_equal 1, ActionMailer::Base.deliveries.size
75
+ end
68
76
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sidekiq_mailer
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors: