factory_bro 0.0.8 → 0.0.10
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 +5 -5
- data/lib/factory_bro.rb +41 -9
- metadata +11 -11
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 802a546afa0fc6bf1409edb79b18ab172994c6568a7b64920b1f74d0b801ee76
|
4
|
+
data.tar.gz: 97bee4ca138bed55a28c1567166f7c2e33ed5b7e6bf64404b2540fcadb93362f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f2f56133d25ce735c0829e36b254ac04bf4a002908a92ca5a18c552e207f2c4a82d23002ccf02dd9e7707a3803eeaff4319ef47c1d6d070dcb63841c5fca9d20
|
7
|
+
data.tar.gz: 6e28a0383ae72b3f1f80508da3ef127118812a1a8941f115cac76f9066cb9e822ef505a238307970525fb155d9ad0ad14f4d9191ab4a80d0ada4092c4692d65b
|
data/lib/factory_bro.rb
CHANGED
@@ -8,28 +8,36 @@ class FactoryBro
|
|
8
8
|
$conns = {}
|
9
9
|
else
|
10
10
|
$conns.each do |key, conn|
|
11
|
-
if conn
|
11
|
+
if conn&.finished?
|
12
12
|
$conns[key] = ''
|
13
13
|
end
|
14
14
|
end
|
15
15
|
end
|
16
|
+
unless $dbs
|
17
|
+
$dbs = {}
|
18
|
+
end
|
19
|
+
$dbs[name] = db
|
16
20
|
if db.include? 'postgres://'
|
17
21
|
dbData = parse_url(db)
|
18
|
-
$conns[name] =
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
22
|
+
$conns[name] = safe_connect(name) do
|
23
|
+
PG.connect(
|
24
|
+
user: dbData[:user],
|
25
|
+
password: dbData[:pw],
|
26
|
+
host: dbData[:host],
|
27
|
+
port: dbData[:port],
|
28
|
+
dbname: dbData[:dbname]
|
29
|
+
)
|
30
|
+
end
|
24
31
|
else
|
25
32
|
# take arguments of user and pw
|
26
|
-
$conns[name] = PG.connect(
|
33
|
+
$conns[name] = safe_connect { PG.connect(dbname: db) }
|
27
34
|
end
|
28
35
|
end
|
29
36
|
|
30
37
|
def self.close(name)
|
31
38
|
$conns[name].finish
|
32
39
|
$conns[name] = ''
|
40
|
+
$dbs[name] = ''
|
33
41
|
end
|
34
42
|
|
35
43
|
def self.close_all
|
@@ -39,10 +47,12 @@ class FactoryBro
|
|
39
47
|
end
|
40
48
|
end
|
41
49
|
$conns = nil
|
50
|
+
$dbs = nil
|
42
51
|
end
|
43
52
|
|
44
53
|
def self.exec(name, statement)
|
45
|
-
run = $conns[name].exec(statement)
|
54
|
+
run = safe_connect(name) { $conns[name].exec(statement) }
|
55
|
+
$try = 0
|
46
56
|
run.values
|
47
57
|
end
|
48
58
|
|
@@ -154,4 +164,26 @@ end
|
|
154
164
|
end
|
155
165
|
{ columns: columns, values: values}
|
156
166
|
end
|
167
|
+
|
168
|
+
def self.safe_connect(name)
|
169
|
+
$try ||= 0
|
170
|
+
max_tries = 4
|
171
|
+
wait = 10
|
172
|
+
success = false
|
173
|
+
result = nil
|
174
|
+
until success
|
175
|
+
begin
|
176
|
+
result = yield
|
177
|
+
success = true
|
178
|
+
result
|
179
|
+
rescue PG::UnableToSend, PG::ConnectionBad => error
|
180
|
+
$try += 1
|
181
|
+
raise error if $try > max_tries
|
182
|
+
puts "FactoryBro error: Failed to connect to #{name}, try ##{$try} to reconnect in #{wait}s"
|
183
|
+
sleep wait
|
184
|
+
connect(name, $dbs[name])
|
185
|
+
end
|
186
|
+
end
|
187
|
+
result
|
188
|
+
end
|
157
189
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: factory_bro
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.10
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Nate Reynolds
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2023-09-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: pg
|
@@ -16,42 +16,42 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 1.
|
19
|
+
version: 1.5.4
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: 1.
|
26
|
+
version: 1.5.4
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: faker
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version:
|
33
|
+
version: 3.2.1
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version:
|
40
|
+
version: 3.2.1
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: pry
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
45
|
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: 0.
|
47
|
+
version: 0.14.2
|
48
48
|
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: 0.
|
54
|
+
version: 0.14.2
|
55
55
|
description: PSQL Parser and Data Generation similar to factory_girl
|
56
56
|
email: nate@n8r.us
|
57
57
|
executables: []
|
@@ -60,7 +60,8 @@ extra_rdoc_files: []
|
|
60
60
|
files:
|
61
61
|
- lib/factory_bro.rb
|
62
62
|
homepage: https://github.com/nvreynolds/factory_bro
|
63
|
-
licenses:
|
63
|
+
licenses:
|
64
|
+
- MIT
|
64
65
|
metadata: {}
|
65
66
|
post_install_message:
|
66
67
|
rdoc_options: []
|
@@ -77,8 +78,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
77
78
|
- !ruby/object:Gem::Version
|
78
79
|
version: '0'
|
79
80
|
requirements: []
|
80
|
-
|
81
|
-
rubygems_version: 2.6.8
|
81
|
+
rubygems_version: 3.0.3.1
|
82
82
|
signing_key:
|
83
83
|
specification_version: 4
|
84
84
|
summary: Factory Bro
|