Skip to content

Commit 63d2ef0

Browse files
committed
Add Subscription#each for convenient message handling.
1 parent dece694 commit 63d2ef0

File tree

2 files changed

+30
-0
lines changed

2 files changed

+30
-0
lines changed

lib/async/redis/context/subscribe.rb

+8
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,14 @@ def listen
3131
end
3232
end
3333

34+
def each
35+
return to_enum unless block_given?
36+
37+
while response = self.listen
38+
yield response
39+
end
40+
end
41+
3442
def subscribe(channels)
3543
@connection.write_request ['SUBSCRIBE', *channels]
3644
@connection.flush

test/async/redis/context/subscribe.rb

+22
Original file line numberDiff line numberDiff line change
@@ -68,4 +68,26 @@
6868
ensure
6969
subscription.close
7070
end
71+
72+
with "#each" do
73+
it "should iterate over messages" do
74+
subscription = client.subscribe(news_channel)
75+
76+
listener = reactor.async do
77+
subscription.each do |type, name, message|
78+
expect(type).to be == 'message'
79+
expect(name).to be == news_channel
80+
expect(message).to be == 'Hello'
81+
82+
break
83+
end
84+
end
85+
86+
client.publish(news_channel, 'Hello')
87+
88+
listener.wait
89+
ensure
90+
subscription.close
91+
end
92+
end
7193
end

0 commit comments

Comments
 (0)