Skip to content

Commit 2a04fb7

Browse files
authored
Handle redis-rb deprecations (#1)
* Handle redis.multi deprecations * Handle redis.blpop deprecation * Handle redis.exists deprecation * Bump to 0.3.2
1 parent 8653045 commit 2a04fb7

File tree

3 files changed

+25
-19
lines changed

3 files changed

+25
-19
lines changed

CHANGELOG.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,11 @@
11
Changelog
22
---------
33

4+
### 0.3.2 November 12, 2025
5+
- Fix deprecated `redis.exists` to use `redis.exists?`
6+
- Fix deprecated calling commands on `Redis` inside `Redis #multi`.
7+
- Fix deprecated positional timeout on `redis.blpop`
8+
49
### 0.3.1 April 17, 2016
510
- Fix `sem.lock(0)` bug (thanks eugenk!).
611

lib/redis/semaphore.rb

Lines changed: 19 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ def lock(timeout = nil)
6262

6363
if timeout.nil? || timeout > 0
6464
# passing timeout 0 to blpop causes it to block
65-
_key, current_token = @redis.blpop(available_key, timeout || 0)
65+
_key, current_token = @redis.blpop(available_key, timeout: (timeout || 0))
6666
else
6767
current_token = @redis.lpop(available_key)
6868
end
@@ -105,22 +105,22 @@ def locked?(token = nil)
105105
def signal(token = 1)
106106
token ||= generate_unique_token
107107

108-
@redis.multi do
109-
@redis.hdel grabbed_key, token
110-
@redis.lpush available_key, token
108+
@redis.multi do |transaction|
109+
transaction.hdel grabbed_key, token
110+
transaction.lpush available_key, token
111111

112-
set_expiration_if_necessary
112+
set_expiration_if_necessary(transaction)
113113
end
114114
end
115115

116116
def exists?
117-
@redis.exists(exists_key)
117+
@redis.exists?(exists_key)
118118
end
119119

120120
def all_tokens
121-
@redis.multi do
122-
@redis.lrange(available_key, 0, -1)
123-
@redis.hkeys(grabbed_key)
121+
@redis.multi do |transaction|
122+
transaction.lrange(available_key, 0, -1)
123+
transaction.hkeys(grabbed_key)
124124
end.flatten
125125
end
126126

@@ -184,23 +184,24 @@ def simple_expiring_mutex(key_name, expires_in)
184184
def create!
185185
@redis.expire(exists_key, 10)
186186

187-
@redis.multi do
188-
@redis.del(grabbed_key)
189-
@redis.del(available_key)
187+
@redis.multi do |transaction|
188+
transaction.del(grabbed_key)
189+
transaction.del(available_key)
190190
@resource_count.times do |index|
191-
@redis.rpush(available_key, index)
191+
transaction.rpush(available_key, index)
192192
end
193-
@redis.set(version_key, API_VERSION)
194-
@redis.persist(exists_key)
193+
transaction.set(version_key, API_VERSION)
194+
transaction.persist(exists_key)
195195

196-
set_expiration_if_necessary
196+
set_expiration_if_necessary(transaction)
197197
end
198198
end
199199

200-
def set_expiration_if_necessary
200+
def set_expiration_if_necessary(transaction = nil)
201+
redis = transaction || @redis
201202
if @expiration
202203
[available_key, exists_key, version_key].each do |key|
203-
@redis.expire(key, @expiration)
204+
redis.expire(key, @expiration)
204205
end
205206
end
206207
end

redis-semaphore.gemspec

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
Gem::Specification.new do |s|
22
s.name = 'redis-semaphore'
3-
s.version = '0.3.1'
3+
s.version = '0.3.2'
44
s.summary = 'Implements a distributed semaphore or mutex using Redis.'
55
s.authors = ['David Verhasselt']
66
s.email = 'david@crowdway.com'

0 commit comments

Comments
 (0)