sidekiq_mailer 0.0.1 → 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/sidekiq_mailer/proxy.rb +13 -28
- data/lib/sidekiq_mailer/version.rb +1 -1
- data/lib/sidekiq_mailer.rb +12 -0
- data/test/sidekiq_mailer_test.rb +8 -0
- metadata +1 -1
data/lib/sidekiq_mailer/proxy.rb
CHANGED
@@ -12,36 +12,13 @@ class Sidekiq::Mailer::Proxy
|
|
12
12
|
end
|
13
13
|
|
14
14
|
def deliver
|
15
|
-
|
16
|
-
|
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
|
-
|
23
|
-
|
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
|
data/lib/sidekiq_mailer.rb
CHANGED
@@ -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
|
data/test/sidekiq_mailer_test.rb
CHANGED
@@ -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
|