lib/redis.rb in redis-5.0.0.beta3 vs lib/redis.rb in redis-5.0.0.beta4
- old
+ new
@@ -163,22 +163,30 @@
@client.blocking_call_v(timeout, command, &block)
end
end
def _subscription(method, timeout, channels, block)
- if @subscription_client
- return @subscription_client.call_v([method] + channels)
- end
+ if block
+ if @subscription_client
+ raise SubscriptionError, "This client is already subscribed"
+ end
- begin
- @subscription_client = SubscribedClient.new(@client.pubsub)
- if timeout > 0
- @subscription_client.send(method, timeout, *channels, &block)
- else
- @subscription_client.send(method, *channels, &block)
+ begin
+ @subscription_client = SubscribedClient.new(@client.pubsub)
+ if timeout > 0
+ @subscription_client.send(method, timeout, *channels, &block)
+ else
+ @subscription_client.send(method, *channels, &block)
+ end
+ ensure
+ @subscription_client = nil
end
- ensure
- @subscription_client = nil
+ else
+ unless @subscription_client
+ raise SubscriptionError, "This client is not subscribed"
+ end
+
+ @subscription_client.call_v([method].concat(channels))
end
end
end
require "redis/version"