activerecord-after-transaction 0.1.1 → 0.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/VERSION +1 -1
- data/lib/activerecord-after-transaction/methods.rb +4 -1
- data/spec/after_transaction/methods_spec.rb +32 -0
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8c7628dfc2746e467f424e85396a743ef483bb63
|
4
|
+
data.tar.gz: fc7f8a21fce29ec827dda67d9c7ad4124845631b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5680857fc20de8921ec1f709bf07264a4951b6a5ec44ed879111ec99983cfcde671ca9cf08b2ad129c197b7883ef6ac397a766b802fde14a82b11e810be3d7b2
|
7
|
+
data.tar.gz: 8a64d651643698a3768d9c7a9a6b9b17ef6df7e1f3d3de24536d3f6c1908222b6368f0aed1625cf47508b99aefd401ac7b19f9845b54accb73331aec91491a4c
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.1.
|
1
|
+
0.1.2
|
@@ -16,8 +16,10 @@ module ActiveRecord::AfterTransaction
|
|
16
16
|
logger && logger.debug("Push #{block}")
|
17
17
|
end
|
18
18
|
|
19
|
+
private
|
20
|
+
|
19
21
|
def execute_after_transaction
|
20
|
-
queue = @after_transaction_queue
|
22
|
+
queue = @after_transaction_queue ||= []
|
21
23
|
if !queue.empty?
|
22
24
|
logger && logger.debug("Execute the queue")
|
23
25
|
queue = queue.dup
|
@@ -31,6 +33,7 @@ module ActiveRecord::AfterTransaction
|
|
31
33
|
|
32
34
|
def clear_after_transaction
|
33
35
|
logger && logger.debug("Clear the queue")
|
36
|
+
@after_transaction_queue ||= []
|
34
37
|
@after_transaction_queue.clear
|
35
38
|
end
|
36
39
|
end
|
@@ -9,6 +9,34 @@ describe ActiveRecord::AfterTransaction::Methods do
|
|
9
9
|
end
|
10
10
|
subject { klass.new }
|
11
11
|
|
12
|
+
shared_examples 'without error' do
|
13
|
+
it 'does not raise error in the after_commit callback' do
|
14
|
+
step = 1
|
15
|
+
subject.class_eval do
|
16
|
+
after_commit do
|
17
|
+
step = 2
|
18
|
+
end
|
19
|
+
end
|
20
|
+
klass.transaction do
|
21
|
+
subject.save!
|
22
|
+
end
|
23
|
+
expect(step).to eq 2
|
24
|
+
end
|
25
|
+
it 'does not raise error in the after_rollback callback' do
|
26
|
+
step = 1
|
27
|
+
subject.class_eval do
|
28
|
+
after_rollback do
|
29
|
+
step = 2
|
30
|
+
end
|
31
|
+
end
|
32
|
+
klass.transaction do
|
33
|
+
subject.save!
|
34
|
+
raise ActiveRecord::Rollback
|
35
|
+
end
|
36
|
+
expect(step).to eq 2
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
12
40
|
describe 'in a transaction' do
|
13
41
|
it 'executes the proc after transaction' do
|
14
42
|
step = 1
|
@@ -43,6 +71,10 @@ describe ActiveRecord::AfterTransaction::Methods do
|
|
43
71
|
end
|
44
72
|
expect(step).to eq 1
|
45
73
|
end
|
74
|
+
it_behaves_like 'without error'
|
75
|
+
describe 'with empty queue' do
|
76
|
+
it_behaves_like 'without error'
|
77
|
+
end
|
46
78
|
end
|
47
79
|
describe 'not in a transaction' do
|
48
80
|
it 'executes the proc immediately' do
|