mandrill_queue 0.2.5 → 0.2.6

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 999107f1638f9646e86aa8e1524fa3a127d0dbdd
4
- data.tar.gz: 4fe4219adb5e5eed2686bc78b502761d6b4a8083
3
+ metadata.gz: d51589640920eb3e6f0adc4a4216b56bf018a6a3
4
+ data.tar.gz: 734ac1825282bd142a07b3206341cf5092ff6ddc
5
5
  SHA512:
6
- metadata.gz: f16991503ca10ef819f196cce0d0e38b9f364813303f6d822acbe50294b280d1570d8a72f15f7f083cde388deb431b466c964f7be94af54d3236648ff820e808
7
- data.tar.gz: d9e669df1f6d28521d4a715fbd5aa80348fcce6ab1c5c378e204febd4238a2f1b8c0cfb0e7c134edbaa408b77f02d82835026e9a14f3bfbff890e85c5146c34d
6
+ metadata.gz: 18e64f5f2569a7a647f82b28496aa1a3a29536a5f39ffbe94903db5c0732434094b55d228f01a268db91ad76f17a8f5ffcc3b347c74874efc110200c5d7cca30
7
+ data.tar.gz: f8c468c62f2761a70ccfa63d80fb692770619d8a1f8626383216a32bf32d506938b1baa2a1956408d4d93d4797b0de39202981837f5f8829330481e17ddf28c1
data/Gemfile CHANGED
@@ -23,5 +23,5 @@ platforms :rbx do
23
23
  end
24
24
 
25
25
  # group :development, :test do
26
- # gem 'debugger', platform: :ruby
26
+ # gem 'pry-byebug', platform: :ruby
27
27
  # end
data/README.md CHANGED
@@ -117,7 +117,9 @@ This can be added anywhere like a Rails controller or Sinatra endpoint.
117
117
 
118
118
  You probably already know this bit:
119
119
 
120
- gem 'resque' # Support for Sidekiq and writing custom adapters coming soon...
120
+ gem 'sidekiq'
121
+ # or
122
+ # gem 'resque'
121
123
  gem 'mandrill_queue'
122
124
 
123
125
  but didn't know this (but it's optional):
@@ -149,6 +151,7 @@ but here's a taster:
149
151
  # NEEDED FOR WORKER ONLY
150
152
  # Mandrill api key needed for worker only
151
153
  config.api_key = 'xxxxxx'
154
+ config.adapter = MyQueueAdapter # or just :sidekiq / :resque
152
155
  config.default_worker_class = MyWorker
153
156
  config.default_queue = :hipster_queue
154
157
  end
@@ -221,8 +224,9 @@ end
221
224
 
222
225
  ## TODO
223
226
 
224
- 1. Render ActionView views to mailers.
225
- 2. Allow synchonous sending.
227
+ 1. NB! Change DSL to pass in arguments to blocks so that the class context is still accessible within them.
228
+ 2. Render ActionView views to mailers.
229
+ 3. Allow synchonous sending.
226
230
 
227
231
  ## Contributing
228
232
 
@@ -1,8 +1,21 @@
1
1
  module MandrillQueue
2
2
  module Adapters
3
3
  class ResqueAdapter
4
- def enqueue_to(queue, klass, *args)
5
- ::Resque.enqueue_to(queue, klass, *args)
4
+ def enqueue_to(queue, klass, options, *args)
5
+ if options.key?(:send_at)
6
+ check_for_scheduler!
7
+ Resque.enqueue_at_with_queue(queue, options[:send_at], klass, *args)
8
+ elsif options.key?(:send_in)
9
+ check_for_scheduler!
10
+ Resque.enqueue_in_with_queue(queue, options[:send_in], klass, *args)
11
+ else
12
+ ::Resque.enqueue_to(queue, klass, *args)
13
+ end
14
+ end
15
+
16
+ def check_for_scheduler!
17
+ raise RuntimeError, "Please install resque-scheduler to allow scheduled jobs!" \
18
+ unless ::Resque.respond_to?(:enqueue_in)
6
19
  end
7
20
  end
8
21
  end
@@ -1,8 +1,16 @@
1
1
  module MandrillQueue
2
2
  module Adapters
3
3
  class SidekiqAdapter
4
- def enqueue_to(queue, klass, *args)
5
- ::Sidekiq::Client.enqueue_to(queue, klass, *args)
4
+ def enqueue_to(queue, klass, options, *args)
5
+ client = ::Sidekiq::Client
6
+
7
+ if options.key?(:send_at)
8
+ client.enqueue_to_in(queue, options[:send_at], klass, *args)
9
+ elsif options.key?(:send_in)
10
+ client.enqueue_to_in(queue, options[:send_in], klass, *args)
11
+ else
12
+ client.enqueue_to(queue, klass, *args)
13
+ end
6
14
  end
7
15
  end
8
16
  end
@@ -1,7 +1,7 @@
1
1
  module MandrillQueue
2
2
  class Configuration
3
3
  ACCESSORS = [:message_defaults, :resque, :default_worker_class,
4
- :default_queue, :api_key, :logger, :adapter]
4
+ :default_queue, :api_key, :logger, :adapter, :adapter_options]
5
5
  attr_accessor(*ACCESSORS)
6
6
 
7
7
  def initialize(defaults = {}, &block)
@@ -81,6 +81,7 @@ module MandrillQueue
81
81
 
82
82
  def initialize(values = nil)
83
83
  set!(values) unless values.nil?
84
+ @_adapter_options = self.class.configuration.adapter_options || {}
84
85
  end
85
86
 
86
87
  def reset!
@@ -133,9 +134,14 @@ module MandrillQueue
133
134
 
134
135
  def deliver
135
136
  validate!
136
- MandrillQueue.adapter.enqueue_to(queue, worker_class, to_hash)
137
+ MandrillQueue.adapter.enqueue_to(queue, worker_class, adapter_options, to_hash)
137
138
  end
138
139
 
140
+ def adapter_options(options = nil)
141
+ @_adapter_options.merge!(options) unless options.nil?
142
+ @_adapter_options ||= {}
143
+ end
144
+
139
145
  def to_hash(options = {})
140
146
  hash = {}
141
147
  ACCESSORS.each do |key|
@@ -145,7 +151,7 @@ module MandrillQueue
145
151
 
146
152
  hash[:message] = message.to_hash(options) rescue nil if !@_message.nil? || options[:include_nils]
147
153
  hash[:content] = content.to_key_value_array(options) rescue nil if !@_content.nil? || options[:include_nils]
148
- hash
154
+ hash
149
155
  end
150
156
 
151
157
  def set!(hash)
@@ -1,3 +1,3 @@
1
1
  module MandrillQueue
2
- VERSION = '0.2.5'
2
+ VERSION = '0.2.6'
3
3
  end
@@ -5,6 +5,8 @@ require 'mandrill_queue/configuration'
5
5
  require 'mandrill_queue/mailer'
6
6
 
7
7
  module MandrillQueue
8
+ @@lock = Mutex.new
9
+
8
10
  def self.configuration
9
11
  @configuration ||= Configuration.new(defaults)
10
12
  end
@@ -33,18 +35,20 @@ module MandrillQueue
33
35
  end
34
36
 
35
37
  def self.adapter
36
- @_adapter ||= begin
37
- unless adapter = configuration.adapter
38
- adapter = :resque if defined(::Resque)
39
- adapter = :sidekiq if defined(::Sidekiq)
40
- if adapter.nil?
41
- raise RuntimeError, <<-TXT.strip.tr("\t", '')
42
- Worker adapter was not configured and cannot be determined.
43
- Please include a worker gem in your Gemfile. Resque and Sidekiq are supported.
44
- TXT
38
+ @@lock.synchronize do
39
+ @_adapter ||= begin
40
+ unless adapter = configuration.adapter
41
+ adapter = :resque if defined(::Resque)
42
+ adapter = :sidekiq if defined(::Sidekiq)
43
+ if adapter.nil?
44
+ raise RuntimeError, <<-TXT.strip.tr("\t", '')
45
+ Worker adapter was not configured and cannot be determined.
46
+ Please include a worker gem in your Gemfile. Resque and Sidekiq are supported.
47
+ TXT
48
+ end
45
49
  end
50
+ load_adapter(adapter)
46
51
  end
47
- load_adapter(adapter)
48
52
  end
49
53
  end
50
54
 
@@ -41,4 +41,9 @@ MandrillQueue.configure do |config|
41
41
  # Used to set the current logger. This can be any object
42
42
  # that responds to debug, info, warn, error and fatal
43
43
  # config.logger = MyLoggingClass
44
+ #
45
+ # Default options passed through to the queue adapter
46
+ # These options can mean different things depending on
47
+ # which adapter you choose.
48
+ # config.adapter_options = {}
44
49
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mandrill_queue
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.5
4
+ version: 0.2.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Stan Bondi
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-09-17 00:00:00.000000000 Z
11
+ date: 2015-02-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport