redis_lock 0.4.1 → 0.4.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: cae900c6a04e98354ba39f2e8dd7ab9e3fb548c3
4
- data.tar.gz: 50bc150522734a575adfa0c19016b3b1b6769ebd
3
+ metadata.gz: 94153e931462c9d14aea8fa05a98bfa3e96a7048
4
+ data.tar.gz: c50f8474a8dc98fa1a274c2f48441cfcefc64416
5
5
  SHA512:
6
- metadata.gz: 7b35c94c437852edda8a390123e981d26efb3fc03fec32189cfce0b5f0865665e00a5524a1d43a09be2959a8d066f2a300fe5f39182a373fad3025f8b6e7a08e
7
- data.tar.gz: 0671d9f6f989bdf7788e9fb23c3d7bccedaf38ba925b38c025b46844697873457ed3cc7f29d66cfefae61f19cb018055be7c33e6fb4b6445c5aa01ae83fbee1c
6
+ metadata.gz: e4c6a2da46689ea85fc8a52fa81025462e778e8a724d21cf344d8fd7d24bc21d7a2e453a91c2d2ed9f35fcd378270dcbef6a98c5a42c4bda537f222128c326c2
7
+ data.tar.gz: 6aadd0fb834b7b1549b85368f209cac4f8d147cbe62eec80beaac02d38d36a23fb2646b3d288d9e10437c158c9fc753b3117068ee0330352b0add81cf6a019ac
@@ -1,5 +1,5 @@
1
1
  class RedisLock
2
- class IfLocked < Semaphore
2
+ class IfLocked < Strategy
3
3
  def call(&block)
4
4
  return :open if lock.open?
5
5
  _perform(&block)
@@ -1,5 +1,5 @@
1
1
  class RedisLock
2
- class IfOpen < Semaphore
2
+ class IfOpen < Strategy
3
3
  def call(&block)
4
4
  return :locked if lock.locked?
5
5
  _perform(&block)
@@ -1,11 +1,5 @@
1
1
  class RedisLock
2
- class Semaphore
3
- attr_reader :lock, :args
4
-
5
- def initialize(lock, args = {})
6
- @lock = lock
7
- @args = args
8
- end
2
+ class Semaphore < Strategy
9
3
 
10
4
  def call(&block)
11
5
  ttl = args[:ttl] || lock.config.default_ttl
@@ -14,19 +8,11 @@ class RedisLock
14
8
  sleep (args[:wait] || 1)
15
9
  end
16
10
  lock.set(ttl, set_opts)
17
- out = _perform(&block)
18
- lock.unlock!
19
- out
11
+ _perform(&block)
20
12
  end
21
13
 
22
- private
23
-
24
- def _perform(&block)
25
- yield lock
26
- rescue => e
27
- lock.config.logger.error "[#{self.class}] key: `#{key}` error:"
28
- lock.config.logger.error e
29
- raise e
14
+ def after_perform
15
+ lock.unlock!
30
16
  end
31
17
  end
32
18
  end
@@ -0,0 +1,29 @@
1
+ class RedisLock
2
+ class Strategy
3
+ attr_reader :lock, :args
4
+
5
+ def initialize(lock, args = {})
6
+ @lock = lock
7
+ @args = args
8
+ end
9
+
10
+ def call(&block)
11
+ raise NotImplementedError
12
+ end
13
+
14
+ def after_perform
15
+ end
16
+
17
+ private
18
+
19
+ def _perform(&block)
20
+ yield lock
21
+ rescue => e
22
+ lock.config.logger.error "[#{self.class}] key: `#{key}` error:"
23
+ lock.config.logger.error e
24
+ raise e
25
+ ensure
26
+ after_perform
27
+ end
28
+ end
29
+ end
@@ -1,3 +1,3 @@
1
1
  class RedisLock
2
- VERSION = "0.4.1"
2
+ VERSION = "0.4.2"
3
3
  end
data/lib/redis_lock.rb CHANGED
@@ -98,6 +98,7 @@ class RedisLock
98
98
  end
99
99
 
100
100
  require "redis_lock/configuration"
101
+ require "redis_lock/strategy"
101
102
  require "redis_lock/semaphore"
102
103
  require "redis_lock/if_open"
103
104
  require "redis_lock/if_locked"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: redis_lock
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.1
4
+ version: 0.4.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Artur Pañach
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-05-23 00:00:00.000000000 Z
11
+ date: 2018-05-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -100,6 +100,7 @@ files:
100
100
  - lib/redis_lock/if_open.rb
101
101
  - lib/redis_lock/multi_lock.rb
102
102
  - lib/redis_lock/semaphore.rb
103
+ - lib/redis_lock/strategy.rb
103
104
  - lib/redis_lock/version.rb
104
105
  - redis_lock.gemspec
105
106
  homepage: https://github.com/arturictus/redis_lock.git