redstruct 0.2.0 → 0.2.1

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: 3e699e92aa673d70280aa80258169eaad2c8edad
4
- data.tar.gz: f1de7e921d57040ae2e74d1cc1db2b481b25d5f8
3
+ metadata.gz: 134acc649952b4163693f10342277431de4934fa
4
+ data.tar.gz: 19ab242fd3c80366c0904dd4f9ef774bbebe77e7
5
5
  SHA512:
6
- metadata.gz: d74321747fb7d5afa0d2f87ab1e7f6487b5e3a20289c071b5dd2a4ebb1068b601389de8d0e8003300436ae824331e6a5e9dc922e469503bdfb66ee6476270c37
7
- data.tar.gz: 8b58b8d2c16aba6bc6efc9213b19d894fbad8a362a1466e372afa5fd448753f055219ef68596e18fc903eb929c579515bce05640c27bd50ff5d210227e78e8dd
6
+ metadata.gz: d7750e77d99eed37f6e8f40d2b7125309b706b53b1a21034bf79211c5c50e8cb130bd392cf4d5694c8faadd51e72c0346eb89dc9276a4d30724d229987e6ea42
7
+ data.tar.gz: 724d70a31f5b50a59bbf7b899f3bcffc0d9204ad76b3ee2141a99e2bb6ab1dafcee2ca82d0f974f7dd702716bb41e26e3b2ed5d382e5d13e59ed7a53d5d63857
@@ -51,6 +51,12 @@ module Redstruct
51
51
  @tokens = factory.list('tokens')
52
52
  end
53
53
 
54
+ # Deletes all traces of this lock
55
+ # @return [Boolean] true if deleted, false otherwise
56
+ def delete
57
+ return coerce_bool(delete_script(keys: [@lease.key, @tokens.key]))
58
+ end
59
+
54
60
  # Executes the given block if the lock can be acquired
55
61
  # @yield Block to be executed if the lock is acquired
56
62
  def locked
@@ -172,6 +178,13 @@ module Redstruct
172
178
  return false
173
179
  LUA
174
180
 
181
+ # Atomically deletes the given KEYS
182
+ # @param [Array<(::String)>] keys the keys to delete
183
+ # @return [Integer] returns the number of keys deleted
184
+ defscript :delete_script, <<~LUA
185
+ return redis.call('del', unpack(KEYS))
186
+ LUA
187
+
175
188
  def generate_token
176
189
  return SecureRandom.uuid
177
190
  end
@@ -2,5 +2,5 @@
2
2
 
3
3
  module Redstruct
4
4
  # Current version
5
- VERSION = '0.2.0'
5
+ VERSION = '0.2.1'
6
6
  end
@@ -99,6 +99,16 @@ module Redstruct
99
99
  refute lock.release, 'should not be able to release lock since it was already released'
100
100
  end
101
101
 
102
+ def test_delete
103
+ lock = create(expiry: 60)
104
+ refute lock.delete, 'should not be able to delete what does not exist'
105
+ assert lock.acquire, 'should have acquired the lock'
106
+ assert lock.delete, 'should delete the lock'
107
+
108
+ lock = create(lock.resource, expiry: 60)
109
+ assert lock.acquire, 'should be to acquire the lock again since it was deleted'
110
+ end
111
+
102
112
  private
103
113
 
104
114
  def create(resource = nil, **options)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: redstruct
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
  - Nicolas Pepin-Perreault