Skip to content

Commit 657f808

Browse files
committed
Add Observable#with_observer returning self
1 parent 90fd2f3 commit 657f808

File tree

2 files changed

+14
-3
lines changed

2 files changed

+14
-3
lines changed

lib/concurrent/observable.rb

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,12 @@ def add_observer(*args, &block)
1010
observers.add_observer(*args, &block)
1111
end
1212

13+
# @return [Observable] self
14+
def with_observer(*args, &block)
15+
add_observer *args, &block
16+
self
17+
end
18+
1319
# @return [Object] the deleted observer
1420
def delete_observer(*args)
1521
observers.delete_observer(*args)

spec/concurrent/observable_spec.rb

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,14 +23,19 @@ module Concurrent
2323
end
2424

2525
it 'uses the given observer set' do
26-
expected = CopyOnWriteObserverSet.new
26+
expected = CopyOnWriteObserverSet.new
2727
subject.observers = expected
2828
subject.observers.should eql expected
2929
end
3030

3131
it 'delegates #add_observer' do
32-
observer_set.should_receive(:add_observer).with(:observer)
33-
subject.add_observer(:observer)
32+
observer_set.should_receive(:add_observer).with(:observer).and_return { |v| v }
33+
subject.add_observer(:observer).should eq :observer
34+
end
35+
36+
it 'delegates #with_observer' do
37+
observer_set.should_receive(:add_observer).with(:observer).and_return { |v| v }
38+
subject.with_observer(:observer).should eq subject
3439
end
3540

3641
it 'delegates #delete_observer' do

0 commit comments

Comments
 (0)