sidekiq-middleware 0.2.0 → 0.2.1

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: b188c23f68544df2038746bd369ba9d4ab965b3f
4
- data.tar.gz: 4c3b61f360e917fd733b247d6aa60349a11b2270
3
+ metadata.gz: 609eb41397719043e799e6d311934fd35d16e858
4
+ data.tar.gz: 9cda80867210d8a012225fb75481354d6f2242b4
5
5
  SHA512:
6
- metadata.gz: aca4da5872a73e6da626ff87cccc48653238dae8aa88580837e16605d1d23e8dda8980177f24832af564cb472d21f56b4801fdbe3eca684f389ac4adde9ba30c
7
- data.tar.gz: a3eaa745e7d6cfca147602a7845994e3f53f6660b2e7b9a8cf86fd3a31ebdcc14857d49712e2224ac9e8cbc3a21a7cc380854d13d818fb8f9ccbee9ed7cb2d2f
6
+ metadata.gz: 203ae14906166bbf98c759bb9d6b6ae2308c152009ffefd470d81f69dff88809ff97d5666ea29cc1b7e80155d6e7e5acf6bd4316f69d4e9a881bb47ca6b07e59
7
+ data.tar.gz: b9c90463c8f03574784263b41daf28b2d18ba8d3aca3b24364fb6a918890327bf98b5f40b130939e4f8a53f51767fb1a9c059dc7c8a6ec1f2f44e893faee1dc4
data/CHANGES.md CHANGED
@@ -1,7 +1,12 @@
1
+ 0.2.1
2
+ -----------
3
+
4
+ - Make middleware work properly even for ```Sidekiq::Extensions``` workers ([dimko](https://github.com/dimko))
5
+
1
6
  0.2.0
2
7
  -----------
3
8
 
4
- - Fix scheduled jobs locking when ```unique``` is not set to ```:all``` ([dimko](https://github.com/dimko))
9
+ - Fix redundant scheduled jobs locking when ```unique``` is not set to ```:all``` ([dimko](https://github.com/dimko))
5
10
 
6
11
  0.1.4
7
12
  -----------
@@ -1,7 +1,7 @@
1
1
  require 'digest/md5'
2
2
  require 'sidekiq-middleware/version'
3
3
  require 'sidekiq-middleware/core_ext'
4
- require 'sidekiq-middleware/worker'
4
+ require 'sidekiq-middleware/helpers'
5
5
  require 'sidekiq-middleware/server/unique_jobs'
6
6
  require 'sidekiq-middleware/client/unique_jobs'
7
7
  require 'sidekiq-middleware/middleware'
@@ -4,10 +4,10 @@ module Sidekiq
4
4
  class UniqueJobs
5
5
  def call(worker_class, item, queue)
6
6
  worker_class = worker_class.constantize if worker_class.is_a?(String)
7
- enabled = worker_class.unique_enabled?(item)
7
+ enabled = Sidekiq::Middleware::Helpers.unique_enabled?(worker_class, item)
8
8
 
9
9
  if enabled
10
- expiration = worker_class.unique_exiration
10
+ expiration = Sidekiq::Middleware::Helpers.unique_exiration(worker_class)
11
11
  job_id = item['jid']
12
12
  unique = false
13
13
 
@@ -18,7 +18,7 @@ module Sidekiq
18
18
  expiration += (item['at'].to_i - Time.now.to_i)
19
19
  end
20
20
 
21
- unique_key = worker_class.unique_digest(item)
21
+ unique_key = Sidekiq::Middleware::Helpers.unique_digest(worker_class, item)
22
22
 
23
23
  Sidekiq.redis do |conn|
24
24
  conn.watch(unique_key)
@@ -1,12 +1,14 @@
1
1
  module Sidekiq
2
2
  module Middleware
3
- module Worker
3
+ module Helpers
4
+ extend self
5
+
4
6
  UNIQUE_EXPIRATION = 30 * 60 # 30 minutes
5
7
 
6
- def unique_digest(item)
7
- if respond_to?(:lock)
8
+ def unique_digest(klass, item)
9
+ if klass.respond_to?(:lock)
8
10
  args = item['args']
9
- lock(*args)
11
+ klass.lock(*args)
10
12
  else
11
13
  dumped = Sidekiq.dump_json(item.slice('class', 'queue', 'args'))
12
14
  digest = Digest::MD5.hexdigest(dumped)
@@ -15,25 +17,21 @@ module Sidekiq
15
17
  end
16
18
  end
17
19
 
18
- def unique_exiration
19
- get_sidekiq_options['expiration'] || UNIQUE_EXPIRATION
20
+ def unique_exiration(klass)
21
+ klass.get_sidekiq_options['expiration'] || UNIQUE_EXPIRATION
20
22
  end
21
23
 
22
- def unique_enabled?(item)
23
- enabled = get_sidekiq_options['unique']
24
+ def unique_enabled?(klass, item)
25
+ enabled = klass.get_sidekiq_options['unique']
24
26
  if item.has_key?('at') && enabled != :all
25
27
  enabled = false
26
28
  end
27
29
  enabled
28
30
  end
29
31
 
30
- def unique_manual?
31
- get_sidekiq_options['manual']
32
+ def unique_manual?(klass)
33
+ klass.get_sidekiq_options['manual']
32
34
  end
33
35
  end
34
36
  end
35
37
  end
36
-
37
- Sidekiq::Worker::ClassMethods.class_eval do
38
- include Sidekiq::Middleware::Worker
39
- end
@@ -4,13 +4,13 @@ module Sidekiq
4
4
  class UniqueJobs
5
5
  def call(worker_instance, item, queue)
6
6
  worker_class = worker_instance.class
7
- enabled = worker_class.unique_enabled?(item)
7
+ enabled = Sidekiq::Middleware::Helpers.unique_enabled?(worker_class, item)
8
8
 
9
9
  if enabled
10
10
  begin
11
11
  yield
12
12
  ensure
13
- unless worker_class.unique_manual?
13
+ unless Sidekiq::Middleware::Helpers.unique_manual?(worker_class)
14
14
  clear(worker_class, item)
15
15
  end
16
16
  end
@@ -21,7 +21,7 @@ module Sidekiq
21
21
 
22
22
  def clear(worker_class, item)
23
23
  Sidekiq.redis do |conn|
24
- conn.del worker_class.unique_digest(item)
24
+ conn.del Sidekiq::Middleware::Helpers.unique_digest(worker_class, item)
25
25
  end
26
26
  end
27
27
  end
@@ -1,5 +1,5 @@
1
1
  module Sidekiq
2
2
  module Middleware
3
- VERSION = "0.2.0"
3
+ VERSION = "0.2.1"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sidekiq-middleware
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dmitry Krasnoukhov
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-01-22 00:00:00.000000000 Z
11
+ date: 2014-01-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: sidekiq
@@ -103,10 +103,10 @@ files:
103
103
  - lib/sidekiq-middleware.rb
104
104
  - lib/sidekiq-middleware/client/unique_jobs.rb
105
105
  - lib/sidekiq-middleware/core_ext.rb
106
+ - lib/sidekiq-middleware/helpers.rb
106
107
  - lib/sidekiq-middleware/middleware.rb
107
108
  - lib/sidekiq-middleware/server/unique_jobs.rb
108
109
  - lib/sidekiq-middleware/version.rb
109
- - lib/sidekiq-middleware/worker.rb
110
110
  - sidekiq-middleware.gemspec
111
111
  - test/helper.rb
112
112
  - test/test_core_ext.rb