Skip to content

Commit a9466de

Browse files
authored
Merge pull request #1 from marcreynolds/mr-adjust-notifications-unsubscription-934
Change value used in call to unsubscribe
2 parents 64025e0 + ebaa603 commit a9466de

File tree

2 files changed

+24
-3
lines changed

2 files changed

+24
-3
lines changed

lib/sql_spy.rb

+8-3
Original file line numberDiff line numberDiff line change
@@ -37,11 +37,16 @@ def call(_name, start, finish, _message_id, values)
3737
end
3838

3939
def self.track
40+
4041
tracker = Tracker.new
4142

42-
ActiveSupport::Notifications.subscribe("sql.active_record", tracker)
43-
yield
44-
ActiveSupport::Notifications.unsubscribe(tracker)
43+
subscriber = ActiveSupport::Notifications.subscribe("sql.active_record", tracker)
44+
45+
begin
46+
yield
47+
ensure
48+
ActiveSupport::Notifications.unsubscribe(subscriber)
49+
end
4550

4651
tracker.queries
4752
end

test/sql_spy_test.rb

+16
Original file line numberDiff line numberDiff line change
@@ -143,4 +143,20 @@ def test_execute_raw_sql
143143
refute query.update?
144144
refute query.delete?
145145
end
146+
147+
def test_unsubscribe_on_error
148+
mock = MiniTest::Mock.new
149+
mock.expect(:call, true, [Object])
150+
ActiveSupport::Notifications.stub(:unsubscribe, mock) do
151+
begin
152+
queries = SqlSpy.track do
153+
raise "error in block"
154+
end
155+
rescue => e
156+
assert_equal("error in block", e.message)
157+
end
158+
end
159+
160+
mock.verify
161+
end
146162
end

0 commit comments

Comments
 (0)