activerecord-transactionable 3.0.1 → 3.0.3
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
- checksums.yaml.gz.sig +0 -0
- data/CONTRIBUTING.md +40 -19
- data/{LICENSE → LICENSE.txt} +1 -1
- data/README.md +158 -94
- data/SECURITY.md +9 -7
- data/lib/activerecord/transactionable/result.rb +1 -1
- data/lib/activerecord/transactionable/version.rb +3 -1
- data/lib/activerecord/transactionable.rb +93 -35
- data.tar.gz.sig +0 -0
- metadata +102 -133
- metadata.gz.sig +0 -0
- data/.github/FUNDING.yml +0 -12
- data/.github/dependabot.yml +0 -8
- data/.github/workflows/style.yml +0 -34
- data/.github/workflows/supported.yml +0 -58
- data/.github/workflows/unsupported.yml +0 -37
- data/.gitignore +0 -12
- data/.rspec +0 -3
- data/.rubocop.yml +0 -121
- data/.rubocop_todo.yml +0 -149
- data/.simplecov +0 -37
- data/Gemfile +0 -8
- data/Rakefile +0 -25
- data/activerecord-transactionable.gemspec +0 -62
- data/bin/console +0 -15
- data/bin/setup +0 -8
@@ -1,12 +1,12 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
# External gems
|
4
|
+
require "version_gem"
|
3
5
|
require "active_model"
|
4
6
|
require "active_record"
|
5
|
-
# apparently needed for Rails 4.0 compatibility with rspec, when
|
6
|
-
# this gem is loaded before the rails gem by bundler, as will happen when you
|
7
|
-
# keep your Gemfile sorted alphabetically.
|
8
7
|
require "active_record/validations"
|
9
8
|
|
9
|
+
# This gem
|
10
10
|
require "activerecord/transactionable/version"
|
11
11
|
require "activerecord/transactionable/result"
|
12
12
|
|
@@ -28,7 +28,7 @@ module Activerecord
|
|
28
28
|
ERRORS_TO_DISALLOW_INSIDE_TRANSACTION = [
|
29
29
|
ActiveRecord::RecordInvalid,
|
30
30
|
ActiveRecord::StatementInvalid,
|
31
|
-
ActiveRecord::RecordNotUnique
|
31
|
+
ActiveRecord::RecordNotUnique,
|
32
32
|
].freeze
|
33
33
|
# http://api.rubyonrails.org/classes/ActiveRecord/ConnectionAdapters/DatabaseStatements.html#method-i-transaction
|
34
34
|
TRANSACTION_METHOD_ARG_NAMES = %i[
|
@@ -54,10 +54,6 @@ module Activerecord
|
|
54
54
|
INSIDE_CONTEXT = "inside"
|
55
55
|
OUTSIDE_CONTEXT = "outside"
|
56
56
|
|
57
|
-
def transaction_wrapper(**args, &block)
|
58
|
-
self.class.transaction_wrapper(object: self, **args, &block)
|
59
|
-
end
|
60
|
-
|
61
57
|
module ClassMethods
|
62
58
|
def transaction_wrapper(object: nil, **args)
|
63
59
|
lock = args.delete(:lock)
|
@@ -67,13 +63,13 @@ module Activerecord
|
|
67
63
|
transaction_open = ActiveRecord::Base.connection.transaction_open?
|
68
64
|
unless args.keys.empty?
|
69
65
|
raise ArgumentError,
|
70
|
-
|
66
|
+
"#{self} does not know how to handle arguments: #{args.keys.inspect}"
|
71
67
|
end
|
72
68
|
if ERRORS_TO_DISALLOW_INSIDE_TRANSACTION.detect do |error|
|
73
|
-
|
74
|
-
|
69
|
+
inside_args.values.flatten.uniq.include?(error)
|
70
|
+
end
|
75
71
|
raise ArgumentError,
|
76
|
-
|
72
|
+
"#{self} should not rescue #{ERRORS_TO_DISALLOW_INSIDE_TRANSACTION.inspect} inside a transaction: #{inside_args.keys.inspect}"
|
77
73
|
end
|
78
74
|
|
79
75
|
if transaction_open
|
@@ -84,10 +80,18 @@ module Activerecord
|
|
84
80
|
logger.warn("[#{self}.transaction_wrapper] Opening a nested transaction. Setting #{REQUIRES_NEW}: true")
|
85
81
|
end
|
86
82
|
end
|
87
|
-
error_handler_outside_transaction(
|
88
|
-
|
89
|
-
|
90
|
-
|
83
|
+
error_handler_outside_transaction(
|
84
|
+
object: object,
|
85
|
+
transaction_open: transaction_open,
|
86
|
+
**outside_args,
|
87
|
+
) do |outside_is_retry|
|
88
|
+
run_inside_transaction_block(
|
89
|
+
transaction_args: transaction_args,
|
90
|
+
inside_args: inside_args,
|
91
|
+
lock: lock,
|
92
|
+
transaction_open: transaction_open,
|
93
|
+
object: object,
|
94
|
+
) do |is_retry|
|
91
95
|
# regardless of the retry being inside or outside the transaction, it is still a retry.
|
92
96
|
yield outside_is_retry || is_retry
|
93
97
|
end
|
@@ -102,13 +106,17 @@ module Activerecord
|
|
102
106
|
# NOTE: with_lock will reload object!
|
103
107
|
# Note: with_lock does not accept arguments like transaction does.
|
104
108
|
object.with_lock do
|
105
|
-
error_handler_inside_transaction(
|
106
|
-
|
109
|
+
error_handler_inside_transaction(
|
110
|
+
object: object, transaction_open: transaction_open, **inside_args,
|
111
|
+
&block
|
112
|
+
)
|
107
113
|
end
|
108
114
|
else
|
109
115
|
object.transaction(**transaction_args) do
|
110
|
-
error_handler_inside_transaction(
|
111
|
-
|
116
|
+
error_handler_inside_transaction(
|
117
|
+
object: object, transaction_open: transaction_open, **inside_args,
|
118
|
+
&block
|
119
|
+
)
|
112
120
|
end
|
113
121
|
end
|
114
122
|
else
|
@@ -139,8 +147,17 @@ module Activerecord
|
|
139
147
|
prepared_errors.include?(error_class)
|
140
148
|
end
|
141
149
|
local_context = INSIDE_CONTEXT
|
142
|
-
run_block_with_retry(
|
143
|
-
|
150
|
+
run_block_with_retry(
|
151
|
+
object,
|
152
|
+
local_context,
|
153
|
+
transaction_open,
|
154
|
+
retriable_errors,
|
155
|
+
reraisable_errors,
|
156
|
+
already_been_added_to_self,
|
157
|
+
needing_added_to_self,
|
158
|
+
num_retry_attempts,
|
159
|
+
&block
|
160
|
+
)
|
144
161
|
end
|
145
162
|
|
146
163
|
def error_handler_outside_transaction(transaction_open:, object: nil, **args, &block)
|
@@ -155,8 +172,17 @@ module Activerecord
|
|
155
172
|
prepared_errors.include?(error_class)
|
156
173
|
end
|
157
174
|
local_context = OUTSIDE_CONTEXT
|
158
|
-
run_block_with_retry(
|
159
|
-
|
175
|
+
run_block_with_retry(
|
176
|
+
object,
|
177
|
+
local_context,
|
178
|
+
transaction_open,
|
179
|
+
retriable_errors,
|
180
|
+
reraisable_errors,
|
181
|
+
already_been_added_to_self,
|
182
|
+
needing_added_to_self,
|
183
|
+
num_retry_attempts,
|
184
|
+
&block
|
185
|
+
)
|
160
186
|
end
|
161
187
|
|
162
188
|
def run_block_with_retry(object, local_context, transaction_open, retriable_errors, reraisable_errors, already_been_added_to_self, needing_added_to_self, num_retry_attempts)
|
@@ -173,7 +199,7 @@ module Activerecord
|
|
173
199
|
# We pass the retry state along to yield so that the code implementing
|
174
200
|
# the transaction_wrapper can switch behavior on a retry
|
175
201
|
# (e.g. create => find)
|
176
|
-
result = yield (re_try == false ? re_try : attempt)
|
202
|
+
result = yield ((re_try == false) ? re_try : attempt)
|
177
203
|
# When in the outside context we need to preserve the inside result so it bubbles up unmolested with the "meaningful" result of the transaction.
|
178
204
|
if result.is_a?(Activerecord::Transactionable::Result)
|
179
205
|
result # <= preserve the meaningful return value
|
@@ -185,8 +211,14 @@ module Activerecord
|
|
185
211
|
# if that is in the intended behavior, and this way a specific child of StandardError can be reraised while
|
186
212
|
# the parent can still be caught and added to self.errors
|
187
213
|
# Also adds the error to the object if there is an object.
|
188
|
-
transaction_error_logger(
|
189
|
-
|
214
|
+
transaction_error_logger(
|
215
|
+
object: object,
|
216
|
+
error: e,
|
217
|
+
result: nil,
|
218
|
+
attempt: attempt,
|
219
|
+
add_to: nil,
|
220
|
+
additional_message: " [#{transaction_open ? "nested " : ""}#{local_context} re-raising!]",
|
221
|
+
)
|
190
222
|
raise e
|
191
223
|
rescue *retriable_errors => e
|
192
224
|
# This will re-run the begin block above
|
@@ -194,27 +226,45 @@ module Activerecord
|
|
194
226
|
# To avoid the infinite recursion, we track the retry state
|
195
227
|
if attempt >= num_retry_attempts
|
196
228
|
result = Activerecord::Transactionable::Result.new(false, context: local_context, transaction_open: transaction_open, error: e, attempt: attempt, type: "retriable") # <= make the return value meaningful. Meaning is: transaction failed after <attempt> attempts
|
197
|
-
transaction_error_logger(
|
198
|
-
|
229
|
+
transaction_error_logger(
|
230
|
+
object: object,
|
231
|
+
error: e,
|
232
|
+
result: result,
|
233
|
+
additional_message: " [#{transaction_open ? "nested " : ""}#{local_context}]",
|
234
|
+
)
|
199
235
|
result
|
200
236
|
else
|
201
237
|
re_try = true
|
202
238
|
# Not adding error to base when retrying, because otherwise the added error may
|
203
239
|
# prevent the subsequent save from working, in a catch-22
|
204
|
-
transaction_error_logger(
|
205
|
-
|
240
|
+
transaction_error_logger(
|
241
|
+
object: object,
|
242
|
+
error: e,
|
243
|
+
result: nil,
|
244
|
+
attempt: attempt,
|
245
|
+
add_to: nil,
|
246
|
+
additional_message: " [#{transaction_open ? "nested " : ""}#{local_context}]",
|
247
|
+
)
|
206
248
|
retry
|
207
249
|
end
|
208
250
|
rescue *already_been_added_to_self => e
|
209
251
|
# ActiveRecord::RecordInvalid, when done correctly, will have already added the error to object.
|
210
252
|
result = Activerecord::Transactionable::Result.new(false, context: local_context, transaction_open: transaction_open, error: e, attempt: attempt, type: "already_added") # <= make the return value meaningful. Meaning is: transaction failed
|
211
|
-
transaction_error_logger(
|
212
|
-
|
253
|
+
transaction_error_logger(
|
254
|
+
object: nil,
|
255
|
+
error: e,
|
256
|
+
result: result,
|
257
|
+
additional_message: " [#{transaction_open ? "nested " : ""}#{local_context}]",
|
258
|
+
)
|
213
259
|
result
|
214
260
|
rescue *needing_added_to_self => e
|
215
261
|
result = Activerecord::Transactionable::Result.new(false, context: local_context, transaction_open: transaction_open, error: e, attempt: attempt, type: "needing_added") # <= make the return value meaningful. Meaning is: transaction failed
|
216
|
-
transaction_error_logger(
|
217
|
-
|
262
|
+
transaction_error_logger(
|
263
|
+
object: object,
|
264
|
+
error: e,
|
265
|
+
result: result,
|
266
|
+
additional_message: " [#{transaction_open ? "nested " : ""}#{local_context}]",
|
267
|
+
)
|
218
268
|
result
|
219
269
|
end
|
220
270
|
end
|
@@ -233,5 +283,13 @@ module Activerecord
|
|
233
283
|
end
|
234
284
|
end
|
235
285
|
end
|
286
|
+
|
287
|
+
def transaction_wrapper(**args, &block)
|
288
|
+
self.class.transaction_wrapper(object: self, **args, &block)
|
289
|
+
end
|
236
290
|
end
|
237
291
|
end
|
292
|
+
|
293
|
+
Activerecord::Transactionable::Version.class_eval do
|
294
|
+
extend VersionGem::Basic
|
295
|
+
end
|
data.tar.gz.sig
ADDED
Binary file
|
metadata
CHANGED
@@ -1,14 +1,42 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: activerecord-transactionable
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.0.
|
4
|
+
version: 3.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Peter Boling
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
|
-
cert_chain:
|
11
|
-
|
10
|
+
cert_chain:
|
11
|
+
- |
|
12
|
+
-----BEGIN CERTIFICATE-----
|
13
|
+
MIIEgDCCAuigAwIBAgIBATANBgkqhkiG9w0BAQsFADBDMRUwEwYDVQQDDAxwZXRl
|
14
|
+
ci5ib2xpbmcxFTATBgoJkiaJk/IsZAEZFgVnbWFpbDETMBEGCgmSJomT8ixkARkW
|
15
|
+
A2NvbTAeFw0yMzA5MjAxNzMwMjhaFw0yNDA5MTkxNzMwMjhaMEMxFTATBgNVBAMM
|
16
|
+
DHBldGVyLmJvbGluZzEVMBMGCgmSJomT8ixkARkWBWdtYWlsMRMwEQYKCZImiZPy
|
17
|
+
LGQBGRYDY29tMIIBojANBgkqhkiG9w0BAQEFAAOCAY8AMIIBigKCAYEA+a9UvHo3
|
18
|
+
84k96WgU5Kk5HB+cLZs/modjorsTfqY67MJF5nNvAoqcKTUBW4uG+Zpfnm3jaDO5
|
19
|
+
GxhJEIZWfndYzycHT2KMVQ1uTP82ba8ZaKrPlPIafkbui3mdds47qsmqHiblKERg
|
20
|
+
U532lkwfqHDlJwE7OBZQ59EwWWLynlT/yAUHpOBbqIuHKUxdpmBI+sIjrZcD1e05
|
21
|
+
WmjkO6fwIdC5oM757aoPxIgXD587VOViH11Vkm2doskj4T8yONtwVHlcrrhJ9Bzd
|
22
|
+
/zdp6vEn7GZQrABvpOlqwWxQ72ZnFhJe/RJZf6CXOPOh69Ai0QKYl2a1sYuCJKS3
|
23
|
+
nsBnxXJINEEznjR7rZjNUmYD+CZqfjzgPqedRxTlASe7iA4w7xZOqMDzcuhNwcUQ
|
24
|
+
tMEH6BTktxKP3jXZPXRfHCf6s+HRVb6vezAonTBVyydf5Xp5VwWkd6cwm+2BzHl5
|
25
|
+
7kc/3lLxKMcsyEUprAsk8LdHohwZdC267l+RS++AP6Cz6x+nB3oGob19AgMBAAGj
|
26
|
+
fzB9MAkGA1UdEwQCMAAwCwYDVR0PBAQDAgSwMB0GA1UdDgQWBBQCSSas60GqqMjt
|
27
|
+
xR7LoY1gucEvtzAhBgNVHREEGjAYgRZwZXRlci5ib2xpbmdAZ21haWwuY29tMCEG
|
28
|
+
A1UdEgQaMBiBFnBldGVyLmJvbGluZ0BnbWFpbC5jb20wDQYJKoZIhvcNAQELBQAD
|
29
|
+
ggGBAMl9ifcw5p+PdvB7dCPoNKoVdp/2LbC9ztETHuYL2gUMJB6UoS3o9c/piSuR
|
30
|
+
V3ZMQaijmNu6ms1bWAtJ66LjmYrVflJtf9yp31Kierr9LpisMSUx2qbMOHGa8d2Z
|
31
|
+
vCUWPF8E9Cg0mP3GAyZ6qql8jDh/anUKeksPXqJvNxNPDu2DVYsa/IWdl96whzS4
|
32
|
+
Bl7SwB1E7agps40UcshCSKaVDOU0M+XN6SrnJMElnBic+KSAkBkVFbzS0BE4ODZM
|
33
|
+
BgE6nYzQ05qhuvbE+oGdACTlemNtDDWCh0uw+7x0q2PocGIDU5zsPn/WNTkCXPmB
|
34
|
+
CHGvqDNWq4M7ncTKAaS2XExgyb7uPdq9fKiOW8nmH+zCiGzJXzBWwZlKf7L4Ht9E
|
35
|
+
a3f0e5C+zvee9Z5Ng9ciyfav9/fcXgYt5MjoBv27THr5XfBhgOCIHSYW2tqJmWKi
|
36
|
+
KuxrfYrN+9HvMdm+nZ6TypmKftHY3Gj+/uu+g8Icm/zrvTWAEE0mcJOkfrIoNPJb
|
37
|
+
pF8dMA==
|
38
|
+
-----END CERTIFICATE-----
|
39
|
+
date: 2024-03-06 00:00:00.000000000 Z
|
12
40
|
dependencies:
|
13
41
|
- !ruby/object:Gem::Dependency
|
14
42
|
name: activemodel
|
@@ -16,212 +44,174 @@ dependencies:
|
|
16
44
|
requirements:
|
17
45
|
- - ">="
|
18
46
|
- !ruby/object:Gem::Version
|
19
|
-
version:
|
47
|
+
version: 5.2.8.1
|
20
48
|
type: :runtime
|
21
49
|
prerelease: false
|
22
50
|
version_requirements: !ruby/object:Gem::Requirement
|
23
51
|
requirements:
|
24
52
|
- - ">="
|
25
53
|
- !ruby/object:Gem::Version
|
26
|
-
version:
|
54
|
+
version: 5.2.8.1
|
27
55
|
- !ruby/object:Gem::Dependency
|
28
56
|
name: activerecord
|
29
57
|
requirement: !ruby/object:Gem::Requirement
|
30
58
|
requirements:
|
31
59
|
- - ">="
|
32
60
|
- !ruby/object:Gem::Version
|
33
|
-
version:
|
61
|
+
version: 5.2.8.1
|
34
62
|
type: :runtime
|
35
63
|
prerelease: false
|
36
64
|
version_requirements: !ruby/object:Gem::Requirement
|
37
65
|
requirements:
|
38
66
|
- - ">="
|
39
67
|
- !ruby/object:Gem::Version
|
40
|
-
version:
|
68
|
+
version: 5.2.8.1
|
41
69
|
- !ruby/object:Gem::Dependency
|
42
|
-
name:
|
70
|
+
name: version_gem
|
43
71
|
requirement: !ruby/object:Gem::Requirement
|
44
72
|
requirements:
|
45
73
|
- - "~>"
|
46
74
|
- !ruby/object:Gem::Version
|
47
|
-
version: '
|
48
|
-
type: :development
|
49
|
-
prerelease: false
|
50
|
-
version_requirements: !ruby/object:Gem::Requirement
|
51
|
-
requirements:
|
52
|
-
- - "~>"
|
53
|
-
- !ruby/object:Gem::Version
|
54
|
-
version: '11.1'
|
55
|
-
- !ruby/object:Gem::Dependency
|
56
|
-
name: factory_bot
|
57
|
-
requirement: !ruby/object:Gem::Requirement
|
58
|
-
requirements:
|
75
|
+
version: '1.1'
|
59
76
|
- - ">="
|
60
77
|
- !ruby/object:Gem::Version
|
61
|
-
version:
|
62
|
-
type: :
|
78
|
+
version: 1.1.3
|
79
|
+
type: :runtime
|
63
80
|
prerelease: false
|
64
81
|
version_requirements: !ruby/object:Gem::Requirement
|
65
82
|
requirements:
|
83
|
+
- - "~>"
|
84
|
+
- !ruby/object:Gem::Version
|
85
|
+
version: '1.1'
|
66
86
|
- - ">="
|
67
87
|
- !ruby/object:Gem::Version
|
68
|
-
version:
|
88
|
+
version: 1.1.3
|
69
89
|
- !ruby/object:Gem::Dependency
|
70
90
|
name: rake
|
71
91
|
requirement: !ruby/object:Gem::Requirement
|
72
92
|
requirements:
|
73
93
|
- - ">="
|
74
94
|
- !ruby/object:Gem::Version
|
75
|
-
version: '
|
95
|
+
version: '13.1'
|
76
96
|
type: :development
|
77
97
|
prerelease: false
|
78
98
|
version_requirements: !ruby/object:Gem::Requirement
|
79
99
|
requirements:
|
80
100
|
- - ">="
|
81
101
|
- !ruby/object:Gem::Version
|
82
|
-
version: '
|
102
|
+
version: '13.1'
|
83
103
|
- !ruby/object:Gem::Dependency
|
84
|
-
name:
|
104
|
+
name: kramdown
|
85
105
|
requirement: !ruby/object:Gem::Requirement
|
86
106
|
requirements:
|
87
107
|
- - "~>"
|
88
108
|
- !ruby/object:Gem::Version
|
89
|
-
version: '
|
109
|
+
version: '2.4'
|
90
110
|
type: :development
|
91
111
|
prerelease: false
|
92
112
|
version_requirements: !ruby/object:Gem::Requirement
|
93
113
|
requirements:
|
94
114
|
- - "~>"
|
95
115
|
- !ruby/object:Gem::Version
|
96
|
-
version: '
|
116
|
+
version: '2.4'
|
97
117
|
- !ruby/object:Gem::Dependency
|
98
|
-
name:
|
118
|
+
name: yard
|
99
119
|
requirement: !ruby/object:Gem::Requirement
|
100
120
|
requirements:
|
101
121
|
- - "~>"
|
102
122
|
- !ruby/object:Gem::Version
|
103
|
-
version: '0.
|
104
|
-
|
105
|
-
prerelease: false
|
106
|
-
version_requirements: !ruby/object:Gem::Requirement
|
107
|
-
requirements:
|
108
|
-
- - "~>"
|
109
|
-
- !ruby/object:Gem::Version
|
110
|
-
version: '0.6'
|
111
|
-
- !ruby/object:Gem::Dependency
|
112
|
-
name: rspec-block_is_expected
|
113
|
-
requirement: !ruby/object:Gem::Requirement
|
114
|
-
requirements:
|
115
|
-
- - "~>"
|
123
|
+
version: '0.9'
|
124
|
+
- - ">="
|
116
125
|
- !ruby/object:Gem::Version
|
117
|
-
version:
|
126
|
+
version: 0.9.34
|
118
127
|
type: :development
|
119
128
|
prerelease: false
|
120
129
|
version_requirements: !ruby/object:Gem::Requirement
|
121
130
|
requirements:
|
122
131
|
- - "~>"
|
123
132
|
- !ruby/object:Gem::Version
|
124
|
-
version: '
|
125
|
-
-
|
126
|
-
name: rspec-pending_for
|
127
|
-
requirement: !ruby/object:Gem::Requirement
|
128
|
-
requirements:
|
129
|
-
- - "~>"
|
130
|
-
- !ruby/object:Gem::Version
|
131
|
-
version: '0.1'
|
132
|
-
type: :development
|
133
|
-
prerelease: false
|
134
|
-
version_requirements: !ruby/object:Gem::Requirement
|
135
|
-
requirements:
|
136
|
-
- - "~>"
|
133
|
+
version: '0.9'
|
134
|
+
- - ">="
|
137
135
|
- !ruby/object:Gem::Version
|
138
|
-
version:
|
136
|
+
version: 0.9.34
|
139
137
|
- !ruby/object:Gem::Dependency
|
140
|
-
name:
|
138
|
+
name: yard-junk
|
141
139
|
requirement: !ruby/object:Gem::Requirement
|
142
140
|
requirements:
|
143
141
|
- - "~>"
|
144
142
|
- !ruby/object:Gem::Version
|
145
|
-
version: '
|
143
|
+
version: '0.0'
|
146
144
|
type: :development
|
147
145
|
prerelease: false
|
148
146
|
version_requirements: !ruby/object:Gem::Requirement
|
149
147
|
requirements:
|
150
148
|
- - "~>"
|
151
149
|
- !ruby/object:Gem::Version
|
152
|
-
version: '
|
150
|
+
version: '0.0'
|
153
151
|
- !ruby/object:Gem::Dependency
|
154
|
-
name:
|
152
|
+
name: factory_bot
|
155
153
|
requirement: !ruby/object:Gem::Requirement
|
156
154
|
requirements:
|
157
|
-
- -
|
155
|
+
- - '='
|
158
156
|
- !ruby/object:Gem::Version
|
159
|
-
version:
|
157
|
+
version: 6.4.4
|
160
158
|
type: :development
|
161
159
|
prerelease: false
|
162
160
|
version_requirements: !ruby/object:Gem::Requirement
|
163
161
|
requirements:
|
164
|
-
- -
|
162
|
+
- - '='
|
165
163
|
- !ruby/object:Gem::Version
|
166
|
-
version:
|
164
|
+
version: 6.4.4
|
167
165
|
- !ruby/object:Gem::Dependency
|
168
|
-
name:
|
166
|
+
name: rspec
|
169
167
|
requirement: !ruby/object:Gem::Requirement
|
170
168
|
requirements:
|
171
|
-
- - "
|
169
|
+
- - ">="
|
172
170
|
- !ruby/object:Gem::Version
|
173
|
-
version: '
|
171
|
+
version: '3'
|
174
172
|
type: :development
|
175
173
|
prerelease: false
|
176
174
|
version_requirements: !ruby/object:Gem::Requirement
|
177
175
|
requirements:
|
178
|
-
- - "
|
176
|
+
- - ">="
|
179
177
|
- !ruby/object:Gem::Version
|
180
|
-
version: '
|
178
|
+
version: '3'
|
181
179
|
- !ruby/object:Gem::Dependency
|
182
|
-
name:
|
180
|
+
name: rspec-benchmark
|
183
181
|
requirement: !ruby/object:Gem::Requirement
|
184
182
|
requirements:
|
185
183
|
- - "~>"
|
186
184
|
- !ruby/object:Gem::Version
|
187
|
-
version: '0.
|
185
|
+
version: '0.6'
|
188
186
|
type: :development
|
189
187
|
prerelease: false
|
190
188
|
version_requirements: !ruby/object:Gem::Requirement
|
191
189
|
requirements:
|
192
190
|
- - "~>"
|
193
191
|
- !ruby/object:Gem::Version
|
194
|
-
version: '0.
|
192
|
+
version: '0.6'
|
195
193
|
- !ruby/object:Gem::Dependency
|
196
|
-
name:
|
194
|
+
name: rspec-block_is_expected
|
197
195
|
requirement: !ruby/object:Gem::Requirement
|
198
196
|
requirements:
|
199
197
|
- - "~>"
|
200
198
|
- !ruby/object:Gem::Version
|
201
|
-
version: '0
|
202
|
-
|
203
|
-
prerelease: false
|
204
|
-
version_requirements: !ruby/object:Gem::Requirement
|
205
|
-
requirements:
|
206
|
-
- - "~>"
|
207
|
-
- !ruby/object:Gem::Version
|
208
|
-
version: '0.5'
|
209
|
-
- !ruby/object:Gem::Dependency
|
210
|
-
name: rubocop-performance
|
211
|
-
requirement: !ruby/object:Gem::Requirement
|
212
|
-
requirements:
|
213
|
-
- - "~>"
|
199
|
+
version: '1.0'
|
200
|
+
- - ">="
|
214
201
|
- !ruby/object:Gem::Version
|
215
|
-
version:
|
202
|
+
version: 1.0.5
|
216
203
|
type: :development
|
217
204
|
prerelease: false
|
218
205
|
version_requirements: !ruby/object:Gem::Requirement
|
219
206
|
requirements:
|
220
207
|
- - "~>"
|
221
208
|
- !ruby/object:Gem::Version
|
222
|
-
version: '1.
|
209
|
+
version: '1.0'
|
210
|
+
- - ">="
|
211
|
+
- !ruby/object:Gem::Version
|
212
|
+
version: 1.0.5
|
223
213
|
- !ruby/object:Gem::Dependency
|
224
|
-
name:
|
214
|
+
name: rspec_junit_formatter
|
225
215
|
requirement: !ruby/object:Gem::Requirement
|
226
216
|
requirements:
|
227
217
|
- - "~>"
|
@@ -235,33 +225,33 @@ dependencies:
|
|
235
225
|
- !ruby/object:Gem::Version
|
236
226
|
version: '0.6'
|
237
227
|
- !ruby/object:Gem::Dependency
|
238
|
-
name:
|
228
|
+
name: rspec-pending_for
|
239
229
|
requirement: !ruby/object:Gem::Requirement
|
240
230
|
requirements:
|
241
|
-
- - "
|
231
|
+
- - ">="
|
242
232
|
- !ruby/object:Gem::Version
|
243
|
-
version: '
|
233
|
+
version: '0'
|
244
234
|
type: :development
|
245
235
|
prerelease: false
|
246
236
|
version_requirements: !ruby/object:Gem::Requirement
|
247
237
|
requirements:
|
248
|
-
- - "
|
238
|
+
- - ">="
|
249
239
|
- !ruby/object:Gem::Version
|
250
|
-
version: '
|
240
|
+
version: '0'
|
251
241
|
- !ruby/object:Gem::Dependency
|
252
|
-
name:
|
242
|
+
name: silent_stream
|
253
243
|
requirement: !ruby/object:Gem::Requirement
|
254
244
|
requirements:
|
255
|
-
- - "
|
245
|
+
- - ">="
|
256
246
|
- !ruby/object:Gem::Version
|
257
|
-
version: '
|
247
|
+
version: '1'
|
258
248
|
type: :development
|
259
249
|
prerelease: false
|
260
250
|
version_requirements: !ruby/object:Gem::Requirement
|
261
251
|
requirements:
|
262
|
-
- - "
|
252
|
+
- - ">="
|
263
253
|
- !ruby/object:Gem::Version
|
264
|
-
version: '
|
254
|
+
version: '1'
|
265
255
|
- !ruby/object:Gem::Dependency
|
266
256
|
name: sqlite3
|
267
257
|
requirement: !ruby/object:Gem::Requirement
|
@@ -276,20 +266,6 @@ dependencies:
|
|
276
266
|
- - "~>"
|
277
267
|
- !ruby/object:Gem::Version
|
278
268
|
version: '1'
|
279
|
-
- !ruby/object:Gem::Dependency
|
280
|
-
name: yard
|
281
|
-
requirement: !ruby/object:Gem::Requirement
|
282
|
-
requirements:
|
283
|
-
- - ">="
|
284
|
-
- !ruby/object:Gem::Version
|
285
|
-
version: 0.9.20
|
286
|
-
type: :development
|
287
|
-
prerelease: false
|
288
|
-
version_requirements: !ruby/object:Gem::Requirement
|
289
|
-
requirements:
|
290
|
-
- - ">="
|
291
|
-
- !ruby/object:Gem::Version
|
292
|
-
version: 0.9.20
|
293
269
|
description: Getting transactions right is hard, and this gem makes it easier.
|
294
270
|
email:
|
295
271
|
- peter.boling@gmail.com
|
@@ -297,33 +273,26 @@ executables: []
|
|
297
273
|
extensions: []
|
298
274
|
extra_rdoc_files: []
|
299
275
|
files:
|
300
|
-
- ".github/FUNDING.yml"
|
301
|
-
- ".github/dependabot.yml"
|
302
|
-
- ".github/workflows/style.yml"
|
303
|
-
- ".github/workflows/supported.yml"
|
304
|
-
- ".github/workflows/unsupported.yml"
|
305
|
-
- ".gitignore"
|
306
|
-
- ".rspec"
|
307
|
-
- ".rubocop.yml"
|
308
|
-
- ".rubocop_todo.yml"
|
309
|
-
- ".simplecov"
|
310
276
|
- CODE_OF_CONDUCT.md
|
311
277
|
- CONTRIBUTING.md
|
312
|
-
-
|
313
|
-
- LICENSE
|
278
|
+
- LICENSE.txt
|
314
279
|
- README.md
|
315
|
-
- Rakefile
|
316
280
|
- SECURITY.md
|
317
|
-
- activerecord-transactionable.gemspec
|
318
|
-
- bin/console
|
319
|
-
- bin/setup
|
320
281
|
- lib/activerecord/transactionable.rb
|
321
282
|
- lib/activerecord/transactionable/result.rb
|
322
283
|
- lib/activerecord/transactionable/version.rb
|
323
|
-
homepage:
|
284
|
+
homepage: https://github.com/pboling/activerecord-transactionable
|
324
285
|
licenses:
|
325
286
|
- MIT
|
326
|
-
metadata:
|
287
|
+
metadata:
|
288
|
+
homepage_uri: https://github.com/pboling/activerecord-transactionable
|
289
|
+
source_code_uri: https://github.com/pboling/activerecord-transactionable/tree/v3.0.3
|
290
|
+
bug_tracker_uri: https://github.com/pboling/activerecord-transactionable/issues
|
291
|
+
documentation_uri: https://www.rubydoc.info/gems/activerecord-transactionable/3.0.3
|
292
|
+
wiki_uri: https://github.com/pboling/activerecord-transactionable/wiki
|
293
|
+
funding_uri: https://liberapay.com/pboling
|
294
|
+
news_uri: https://www.railsbling.com/tags/activerecord-transactionable
|
295
|
+
rubygems_mfa_required: 'true'
|
327
296
|
post_install_message:
|
328
297
|
rdoc_options: []
|
329
298
|
require_paths:
|
@@ -339,7 +308,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
339
308
|
- !ruby/object:Gem::Version
|
340
309
|
version: '0'
|
341
310
|
requirements: []
|
342
|
-
rubygems_version: 3.
|
311
|
+
rubygems_version: 3.5.6
|
343
312
|
signing_key:
|
344
313
|
specification_version: 4
|
345
314
|
summary: Do ActiveRecord transactions the right way.
|
metadata.gz.sig
ADDED
Binary file
|
data/.github/FUNDING.yml
DELETED
@@ -1,12 +0,0 @@
|
|
1
|
-
# These are supported funding model platforms
|
2
|
-
|
3
|
-
github: [pboling] # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]
|
4
|
-
patreon: galtzo # Replace with a single Patreon username
|
5
|
-
open_collective: # Replace with a single Open Collective username
|
6
|
-
ko_fi: pboling # Replace with a single Ko-fi username
|
7
|
-
tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
|
8
|
-
community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
|
9
|
-
liberapay: pboling # Replace with a single Liberapay username
|
10
|
-
issuehunt: pboling # Replace with a single IssueHunt username
|
11
|
-
otechie: # Replace with a single Otechie username
|
12
|
-
custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2']
|