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.
@@ -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: