em-pg-client-helper 0.4.0 → 0.5.0
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/em-pg-client-helper/transaction.rb +14 -17
- metadata +3 -3
@@ -12,17 +12,15 @@ class PG::EM::Client::Helper::Transaction
|
|
12
12
|
DeferrableGroup.new do |dg|
|
13
13
|
@dg = dg
|
14
14
|
|
15
|
-
|
15
|
+
conn.exec_defer("BEGIN").callback do
|
16
16
|
begin
|
17
17
|
blk.call(self)
|
18
18
|
rescue StandardError => ex
|
19
19
|
rollback(ex)
|
20
20
|
end
|
21
|
-
end.errback { |ex| rollback(ex) }
|
22
|
-
|
23
|
-
@dg.add(df)
|
21
|
+
end.errback { |ex| rollback(ex) }.tap { |df| @dg.add(df) }
|
24
22
|
end.callback do
|
25
|
-
rollback(RuntimeError.new("txn.commit was not called"))
|
23
|
+
rollback(RuntimeError.new("txn.commit was not called")) if @active
|
26
24
|
end.errback do |ex|
|
27
25
|
rollback(ex)
|
28
26
|
end
|
@@ -36,12 +34,10 @@ class PG::EM::Client::Helper::Transaction
|
|
36
34
|
#
|
37
35
|
def commit
|
38
36
|
if @active
|
39
|
-
|
37
|
+
@conn.exec_defer("COMMIT").callback do
|
40
38
|
@active = false
|
41
39
|
self.succeed
|
42
|
-
end.errback { |ex| rollback(ex) }
|
43
|
-
|
44
|
-
@dg.add(df)
|
40
|
+
end.errback { |ex| rollback(ex) }.tap { |df| @dg.add(df) }
|
45
41
|
end
|
46
42
|
end
|
47
43
|
|
@@ -52,12 +48,10 @@ class PG::EM::Client::Helper::Transaction
|
|
52
48
|
#
|
53
49
|
def rollback(ex)
|
54
50
|
if @active
|
55
|
-
|
51
|
+
@conn.exec_defer("ROLLBACK") do
|
56
52
|
@active = false
|
57
53
|
self.fail(ex)
|
58
|
-
end
|
59
|
-
|
60
|
-
@dg.add(df)
|
54
|
+
end.tap { |df| @dg.add(df) }
|
61
55
|
end
|
62
56
|
end
|
63
57
|
|
@@ -76,16 +70,19 @@ class PG::EM::Client::Helper::Transaction
|
|
76
70
|
# given block will be called if and when the query completes
|
77
71
|
# successfully.
|
78
72
|
#
|
73
|
+
# @returns [EM::Deferrable] A deferrable that will be completed when this
|
74
|
+
# specific query finishes.
|
75
|
+
#
|
79
76
|
def exec(sql, values=[], &blk)
|
80
77
|
unless @active
|
81
78
|
raise RuntimeError,
|
82
79
|
"Cannot execute a query in a transaction that has been closed"
|
83
80
|
end
|
84
81
|
|
85
|
-
@
|
86
|
-
@
|
87
|
-
|
88
|
-
|
82
|
+
@conn.exec_defer(sql, values).tap do |df|
|
83
|
+
@dg.add(df)
|
84
|
+
df.callback(&blk) if blk
|
85
|
+
end
|
89
86
|
end
|
90
87
|
alias_method :exec_defer, :exec
|
91
88
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: em-pg-client-helper
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.5.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -261,7 +261,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
261
261
|
version: '0'
|
262
262
|
segments:
|
263
263
|
- 0
|
264
|
-
hash:
|
264
|
+
hash: 472890837169152565
|
265
265
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
266
266
|
none: false
|
267
267
|
requirements:
|
@@ -270,7 +270,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
270
270
|
version: '0'
|
271
271
|
segments:
|
272
272
|
- 0
|
273
|
-
hash:
|
273
|
+
hash: 472890837169152565
|
274
274
|
requirements: []
|
275
275
|
rubyforge_project:
|
276
276
|
rubygems_version: 1.8.23
|