rorvswild 1.6.2 → 1.6.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
- data/lib/rorvswild/agent.rb +0 -5
- data/lib/rorvswild/client.rb +7 -2
- data/lib/rorvswild/deployment.rb +12 -7
- data/lib/rorvswild/local/local.html.erb +1 -2
- data/lib/rorvswild/local/stylesheet/local.css +56 -40
- data/lib/rorvswild/local/stylesheet/vendor/prism.css +8 -8
- data/lib/rorvswild/plugin/active_job.rb +2 -0
- data/lib/rorvswild/plugin/active_record.rb +22 -2
- data/lib/rorvswild/queue.rb +3 -0
- data/lib/rorvswild/section.rb +1 -1
- data/lib/rorvswild/version.rb +1 -1
- data/lib/rorvswild.rb +1 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3d75bdcf83d7aa718c5055d7860d870a79d815901d627e9829f60cc93f5288d2
|
4
|
+
data.tar.gz: 3b6d6e61cff88594c4d6d888a9597c8f2db4a600d8d260514d93c5a4e1ff7b04
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7157d2f6925a01ebac1e54fb08db8017405cd00df633a736b7fcbbdfd11a9886b708ec9680c499540b36b22130744338efd1fab7159bc38fea19f333704cd619
|
7
|
+
data.tar.gz: ee290b637cba8ff57439ca673ea681d2d32fa9823127b66cf6418cbe298525c9a873bf941c40a8d37586e132df036628fdcf3c4d7d53a4e4e78ee3b2522ed061
|
data/lib/rorvswild/agent.rb
CHANGED
@@ -36,7 +36,6 @@ module RorVsWild
|
|
36
36
|
RorVsWild.logger.debug("Start RorVsWild #{RorVsWild::VERSION}")
|
37
37
|
setup_plugins
|
38
38
|
cleanup_data
|
39
|
-
send_deployment
|
40
39
|
end
|
41
40
|
|
42
41
|
def load_features
|
@@ -160,10 +159,6 @@ module RorVsWild
|
|
160
159
|
config[:ignore_exceptions].any? { |str_or_regex| str_or_regex === exception.class.to_s }
|
161
160
|
end
|
162
161
|
|
163
|
-
def send_deployment
|
164
|
-
client.post("/deployments", deployment: Deployment.to_h)
|
165
|
-
end
|
166
|
-
|
167
162
|
#######################
|
168
163
|
### Private methods ###
|
169
164
|
#######################
|
data/lib/rorvswild/client.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require "set"
|
2
4
|
require "uri"
|
3
5
|
require "json/ext"
|
@@ -27,6 +29,7 @@ module RorVsWild
|
|
27
29
|
"X-Ruby-Version" => RUBY_VERSION,
|
28
30
|
}
|
29
31
|
@headers["X-Rails-Version"] = Rails.version if defined?(Rails)
|
32
|
+
@http_unauthorized = false
|
30
33
|
end
|
31
34
|
|
32
35
|
def post(path, data)
|
@@ -60,8 +63,10 @@ module RorVsWild
|
|
60
63
|
end
|
61
64
|
|
62
65
|
def transmit(request)
|
63
|
-
if http = take_or_create_connection
|
64
|
-
http.request(request)
|
66
|
+
if !@http_unauthorized && http = take_or_create_connection
|
67
|
+
response = http.request(request)
|
68
|
+
@http_unauthorized = true if response.code == "401"
|
69
|
+
response
|
65
70
|
end
|
66
71
|
rescue Exception => ex
|
67
72
|
RorVsWild.logger.error(ex.full_message)
|
data/lib/rorvswild/deployment.rb
CHANGED
@@ -1,5 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
require "open3"
|
4
|
+
|
3
5
|
module RorVsWild
|
4
6
|
module Deployment
|
5
7
|
def self.load_config(config)
|
@@ -57,15 +59,13 @@ module RorVsWild
|
|
57
59
|
end
|
58
60
|
|
59
61
|
def self.read_from_scalingo
|
60
|
-
return unless ENV["SOURCE_VERSION"]
|
61
62
|
@revision = ENV["SOURCE_VERSION"]
|
62
63
|
end
|
63
64
|
|
64
65
|
def self.read_from_git
|
65
|
-
@revision = normalize_string(
|
66
|
-
return unless
|
67
|
-
lines =
|
68
|
-
return unless lines
|
66
|
+
return unless @revision = normalize_string(shell("git rev-parse HEAD"))
|
67
|
+
return @revision unless log_stdout = shell("git log -1 --pretty=%an%n%ae%n%B")
|
68
|
+
lines = log_stdout.lines
|
69
69
|
@author = normalize_string(lines[0])
|
70
70
|
@email = normalize_string(lines[1])
|
71
71
|
@description = lines[2..-1] && normalize_string(lines[2..-1].join)
|
@@ -75,8 +75,8 @@ module RorVsWild
|
|
75
75
|
def self.read_from_capistrano
|
76
76
|
return unless File.readable?("REVISION")
|
77
77
|
return unless @revision = File.read("REVISION")
|
78
|
-
|
79
|
-
|
78
|
+
return unless stdout = shell("git --git-dir ../../repo log --format=%an%n%ae%n%B -n 1 #{@revision}")
|
79
|
+
lines = stdout.lines
|
80
80
|
@author = normalize_string(lines[0])
|
81
81
|
@email = normalize_string(lines[1])
|
82
82
|
@description = lines[2..-1] && normalize_string(lines[2..-1].join)
|
@@ -89,5 +89,10 @@ module RorVsWild
|
|
89
89
|
string.empty? ? nil : string
|
90
90
|
end
|
91
91
|
end
|
92
|
+
|
93
|
+
def self.shell(command)
|
94
|
+
stdout, stderr, process = Open3.capture3(command) rescue nil
|
95
|
+
stdout if process && process.success?
|
96
|
+
end
|
92
97
|
end
|
93
98
|
end
|
@@ -55,8 +55,7 @@
|
|
55
55
|
{{/currentRequest}}
|
56
56
|
</div>
|
57
57
|
<div class="rorvswild-local-panel__footer">
|
58
|
-
This data is not sent to rorvswild.com.
|
59
|
-
<a href="https://www.rorvswild.com" class="rorvswild-local-panel__footer__link">create an account</a>.
|
58
|
+
This data is not sent to rorvswild.com. <a href="https://www.rorvswild.com" class="rorvswild-local-panel__footer__link">Create an account</a> to monitor your production environment.
|
60
59
|
</div>
|
61
60
|
</div>
|
62
61
|
|
@@ -3,10 +3,11 @@
|
|
3
3
|
/********************************************/
|
4
4
|
|
5
5
|
.rorvswild-local-toggler {
|
6
|
-
background:
|
7
|
-
color:
|
8
|
-
|
9
|
-
|
6
|
+
background: rgb(16, 20, 28) !important;
|
7
|
+
color: rgb(135,173,250) !important;
|
8
|
+
font-weight: 700 !important;
|
9
|
+
box-shadow: 0 0 0 1px rgba(69,74,84,1) inset, 0 1px 4px 0px rgba(14,18,26,0.96) !important;
|
10
|
+
border-radius: 2px !important;
|
10
11
|
font-family: SF Mono, Menlo, Consolas, DejaVu Sans Mono, monospace !important;
|
11
12
|
font-size: 15px !important;
|
12
13
|
line-height: 24px !important;
|
@@ -19,8 +20,9 @@
|
|
19
20
|
}
|
20
21
|
|
21
22
|
.rorvswild-local-toggler small {
|
22
|
-
color:
|
23
|
-
font-
|
23
|
+
color: rgb(133,139,150) !important;
|
24
|
+
font-weight: 400 !important;
|
25
|
+
font-size: 10px !important;
|
24
26
|
margin-left: 4px !important;
|
25
27
|
display: inline-block !important;
|
26
28
|
}
|
@@ -54,9 +56,10 @@
|
|
54
56
|
/********************************************/
|
55
57
|
|
56
58
|
.rorvswild-local-panel {
|
57
|
-
background:
|
58
|
-
box-shadow: 0 0 0 48px rgba(
|
59
|
-
|
59
|
+
background: rgb(16,20,28) !important;
|
60
|
+
box-shadow: 0 0 0 48px rgba(69,74,84, 0.95),
|
61
|
+
0 1px 16px 2px rgba(14,18,26,0.96) !important;
|
62
|
+
color: rgb(168,174,186) !important;
|
60
63
|
font-family: SF Mono, Menlo, Consolas, DejaVu Sans Mono, monospace !important;
|
61
64
|
font-size: 15px !important;
|
62
65
|
line-height: 24px !important;
|
@@ -88,34 +91,35 @@
|
|
88
91
|
}
|
89
92
|
|
90
93
|
.rorvswild-local-panel ::-moz-selection {
|
91
|
-
background:
|
92
|
-
color:
|
94
|
+
background: rgb(69,74,84) !important;
|
95
|
+
color: rgb(219,234,241) !important;
|
93
96
|
}
|
94
97
|
|
95
98
|
.rorvswild-local-panel ::selection {
|
96
|
-
background:
|
97
|
-
color:
|
99
|
+
background: rgb(69,74,84) !important;
|
100
|
+
color: rgb(219,234,241) !important;
|
98
101
|
}
|
99
102
|
|
100
103
|
.rorvswild-local-panel small {
|
101
|
-
color:
|
102
|
-
font-size:
|
103
|
-
|
104
|
+
color: rgb(133,139,150) !important;
|
105
|
+
font-size: 10px !important;
|
106
|
+
font-weight: 400 !important;
|
107
|
+
margin-left: 2px !important;
|
104
108
|
}
|
105
109
|
|
106
110
|
/* Panel Header */
|
107
111
|
.rorvswild-local-panel__header {
|
108
|
-
background:
|
112
|
+
background: rgb(24,28,36) !important;
|
109
113
|
z-index: 100000000000000005 !important;
|
110
114
|
padding: 12px !important;
|
111
|
-
box-shadow: 0 1px 2px 0 rgba(
|
115
|
+
box-shadow: 0 1px 2px 0 rgba(14,18,26, .8) !important;
|
112
116
|
display: -webkit-box;
|
113
117
|
display: -ms-flexbox;
|
114
118
|
display: flex;
|
115
119
|
}
|
116
120
|
|
117
121
|
.rorvswild-local-panel__header__title {
|
118
|
-
color:
|
122
|
+
color: rgb(168,174,186) !important;
|
119
123
|
text-transform: uppercase !important;
|
120
124
|
font-size: 12px !important;
|
121
125
|
letter-spacing: 2px !important;
|
@@ -131,13 +135,13 @@
|
|
131
135
|
stroke-width: 2 !important;
|
132
136
|
fill: none !important;
|
133
137
|
stroke-linecap: square !important;
|
134
|
-
stroke:
|
138
|
+
stroke: rgb(133,139,150) !important;
|
135
139
|
stroke-miterlimit: 10 !important;
|
136
140
|
vertical-align: middle !important;
|
137
141
|
}
|
138
142
|
|
139
143
|
.rorvswild-local-panel svg:hover {
|
140
|
-
stroke:
|
144
|
+
stroke: rgb(193,204,214) !important;
|
141
145
|
}
|
142
146
|
|
143
147
|
.rorvswild-local-panel__logo {
|
@@ -161,12 +165,12 @@
|
|
161
165
|
|
162
166
|
.rorvswild-local-panel__github svg {
|
163
167
|
stroke: none !important;
|
164
|
-
fill:
|
168
|
+
fill: rgb(133,139,150) !important;
|
165
169
|
}
|
166
170
|
|
167
171
|
.rorvswild-local-panel__github svg:hover {
|
168
172
|
stroke: none !important;
|
169
|
-
fill:
|
173
|
+
fill: rgb(193,204,214) !important;
|
170
174
|
}
|
171
175
|
|
172
176
|
/* Panel Content */
|
@@ -179,7 +183,7 @@
|
|
179
183
|
overflow-x: auto !important;
|
180
184
|
}
|
181
185
|
|
182
|
-
.rorvswild-local-panel__content::-webkit-scrollbar { width:
|
186
|
+
.rorvswild-local-panel__content::-webkit-scrollbar { width: 4px !important; }
|
183
187
|
|
184
188
|
.rorvswild-local-panel__content::-webkit-scrollbar-corner { background: transparent !important; }
|
185
189
|
|
@@ -189,8 +193,8 @@
|
|
189
193
|
}
|
190
194
|
|
191
195
|
.rorvswild-local-panel__content::-webkit-scrollbar-thumb {
|
192
|
-
background-color:
|
193
|
-
outline: 1px solid
|
196
|
+
background-color: rgb(100,106,116) !important;
|
197
|
+
outline: 1px solid rgb(100,106,116) !important;
|
194
198
|
}
|
195
199
|
|
196
200
|
/* Panel request summary */
|
@@ -200,30 +204,36 @@
|
|
200
204
|
display: -ms-flexbox !important;
|
201
205
|
display: flex !important;
|
202
206
|
padding: 12px 12px 11px !important;
|
203
|
-
border-bottom: 1px solid
|
207
|
+
border-bottom: 1px solid rgb(24,28,36) !important;
|
204
208
|
cursor: pointer !important;
|
205
209
|
-ms-flex-wrap: wrap !important;
|
206
210
|
flex-wrap: wrap !important;
|
207
211
|
}
|
208
212
|
|
209
|
-
.rorvswild-local-panel__request:hover { background:
|
213
|
+
.rorvswild-local-panel__request:hover { background: rgb(21,25,34) !important; }
|
210
214
|
|
211
215
|
.rorvswild-local-panel__request__name {
|
212
216
|
word-break: break-all !important;
|
213
217
|
overflow-wrap: break-word !important;
|
214
218
|
width: 100% !important;
|
219
|
+
color: rgb(193,204,214) !important;
|
220
|
+
font-weight: 700;
|
215
221
|
}
|
216
222
|
|
217
223
|
.rorvswild-local-panel__request__path {
|
218
|
-
color:
|
224
|
+
color: rgb(133,139,150) !important;
|
225
|
+
font-weight: 400;
|
219
226
|
display: block !important;
|
220
227
|
}
|
221
228
|
|
222
229
|
.rorvswild-local-panel__request__started-at {
|
223
|
-
color:
|
230
|
+
color: rgb(133,139,150) !important;
|
224
231
|
margin-left: 12px !important;
|
225
232
|
}
|
226
|
-
.rorvswild-local-panel__request__runtime {
|
233
|
+
.rorvswild-local-panel__request__runtime {
|
234
|
+
color: rgb(135,173,250) !important;
|
235
|
+
font-weight: bold !important;
|
236
|
+
}
|
227
237
|
|
228
238
|
/* Panel request details */
|
229
239
|
|
@@ -257,12 +267,12 @@ h2.rorvswild-local-panel__request__name__title {
|
|
257
267
|
|
258
268
|
.rorvswild-local-panel__request-details__section {
|
259
269
|
padding: 12px 12px 11px !important;
|
260
|
-
border-bottom: 1px solid
|
270
|
+
border-bottom: 1px solid rgb(24,28,36) !important;
|
261
271
|
display: block !important;
|
262
272
|
}
|
263
273
|
|
264
274
|
.rorvswild-local-panel__request-details__section:hover {
|
265
|
-
background:
|
275
|
+
background: rgb(21,25,34) !important;
|
266
276
|
-webkit-transition: all .3s !important;
|
267
277
|
transition: all .3s !important;
|
268
278
|
}
|
@@ -281,22 +291,26 @@ h2.rorvswild-local-panel__request__name__title {
|
|
281
291
|
word-break: break-all !important;
|
282
292
|
overflow-wrap: break-word !important;
|
283
293
|
min-width: 0 !important;
|
294
|
+
color: rgb(193,204,214) !important;
|
284
295
|
}
|
285
296
|
|
286
297
|
.rorvswild-local-panel__request-details__section__average {
|
287
|
-
color:
|
298
|
+
color: rgb(135,173,250) !important;
|
299
|
+
font-weight: 700 !important;
|
288
300
|
width: 48px !important;
|
289
301
|
margin:0 12px 0 0 !important;
|
290
302
|
}
|
291
303
|
|
292
304
|
.rorvswild-local-panel__request-details__section__calls {
|
293
|
-
color:
|
305
|
+
color: rgb(168,174,186) !important;
|
294
306
|
width: 48px !important;
|
295
307
|
margin: 0 12px 0 0 !important;
|
296
308
|
}
|
297
309
|
|
298
310
|
.rorvswild-local-panel__request-details__section__impact {
|
311
|
+
color: rgb(193,204,214) !important;
|
299
312
|
width: 48px !important;
|
313
|
+
font-weight: 700 !important;
|
300
314
|
margin: 0 12px 0 0 !important;
|
301
315
|
}
|
302
316
|
|
@@ -304,10 +318,12 @@ h2.rorvswild-local-panel__request__name__title {
|
|
304
318
|
display: -webkit-box !important;
|
305
319
|
display: -ms-flexbox !important;
|
306
320
|
display: flex !important;
|
321
|
+
color: rgb(133,139,150) !important;
|
322
|
+
margin-top: 8px !important;
|
307
323
|
}
|
308
324
|
|
309
325
|
.rorvswild-local-panel__request-details__section__kind {
|
310
|
-
background:
|
326
|
+
background: rgb(40,44,54) !important;
|
311
327
|
font-size: 10px !important;
|
312
328
|
text-transform: uppercase !important;
|
313
329
|
text-align: center !important;
|
@@ -318,7 +334,7 @@ h2.rorvswild-local-panel__request__name__title {
|
|
318
334
|
}
|
319
335
|
|
320
336
|
.rorvswild-local-panel__request-details__section__command {
|
321
|
-
color:
|
337
|
+
color: rgb(133,139,150) !important;
|
322
338
|
-webkit-box-flex: 1 !important;
|
323
339
|
-ms-flex: 1 !important;
|
324
340
|
flex: 1 !important;
|
@@ -331,14 +347,14 @@ h2.rorvswild-local-panel__request__name__title {
|
|
331
347
|
|
332
348
|
.rorvswild-local-panel__footer {
|
333
349
|
width: 100% !important;
|
334
|
-
background:
|
335
|
-
color:
|
350
|
+
background: rgb(40,44,54) !important;
|
351
|
+
color: rgb(168,174,186) !important;
|
336
352
|
padding: 12px !important;
|
337
353
|
text-align: center !important;
|
338
354
|
}
|
339
355
|
|
340
356
|
a.rorvswild-local-panel__footer__link {
|
341
|
-
color:
|
357
|
+
color: rgb(193,204,214) !important;
|
342
358
|
text-decoration: underline !important;
|
343
359
|
line-height: inherit !important;
|
344
360
|
}
|
@@ -7,7 +7,7 @@ http://prismjs.com/download.html?themes=prism-twilight&languages=markup+css+clik
|
|
7
7
|
*/
|
8
8
|
.rorvswild-local-panel code[class*="language-"],
|
9
9
|
.rorvswild-local-panel pre[class*="language-"] {
|
10
|
-
color:
|
10
|
+
color: rgb(133,139,150) !important;
|
11
11
|
background: none !important;
|
12
12
|
font-family: SF Mono, Menlo, Consolas, DejaVu Sans Mono, monospace !important;
|
13
13
|
text-align: left !important;
|
@@ -60,7 +60,7 @@ http://prismjs.com/download.html?themes=prism-twilight&languages=markup+css+clik
|
|
60
60
|
.rorvswild-local-panel .token.prolog,
|
61
61
|
.rorvswild-local-panel .token.doctype,
|
62
62
|
.rorvswild-local-panel .token.cdata {
|
63
|
-
color:
|
63
|
+
color: rgb(133,139,150) !important;
|
64
64
|
font-style: italic !important;
|
65
65
|
opacity: 0.7 !important;
|
66
66
|
}
|
@@ -77,7 +77,7 @@ http://prismjs.com/download.html?themes=prism-twilight&languages=markup+css+clik
|
|
77
77
|
.rorvswild-local-panel .token.boolean,
|
78
78
|
.rorvswild-local-panel .token.number,
|
79
79
|
.rorvswild-local-panel .token.deleted {
|
80
|
-
color:
|
80
|
+
color: rgb(195,116,112) !important;
|
81
81
|
}
|
82
82
|
|
83
83
|
.rorvswild-local-panel .token.property,
|
@@ -85,7 +85,7 @@ http://prismjs.com/download.html?themes=prism-twilight&languages=markup+css+clik
|
|
85
85
|
.rorvswild-local-panel .token.symbol,
|
86
86
|
.rorvswild-local-panel .token.builtin,
|
87
87
|
.rorvswild-local-panel .token.string {
|
88
|
-
color:
|
88
|
+
color: rgb(108,138,200) !important;
|
89
89
|
}
|
90
90
|
|
91
91
|
.rorvswild-local-panel .token.attr-name,
|
@@ -98,17 +98,17 @@ http://prismjs.com/download.html?themes=prism-twilight&languages=markup+css+clik
|
|
98
98
|
.rorvswild-local-panel .token.atrule,
|
99
99
|
.rorvswild-local-panel .token.attr-value,
|
100
100
|
.rorvswild-local-panel .token.keyword {
|
101
|
-
color:
|
101
|
+
color: rgb(171,120,176) !important;
|
102
102
|
}
|
103
103
|
|
104
104
|
.rorvswild-local-panel .token.constant,
|
105
105
|
.rorvswild-local-panel .token.regex,
|
106
106
|
.rorvswild-local-panel .token.important {
|
107
|
-
color:
|
107
|
+
color: rgb(167,133,61) !important;
|
108
108
|
}
|
109
109
|
|
110
110
|
.rorvswild-local-panel .token.function {
|
111
|
-
color:
|
111
|
+
color: rgb(30,151,162) !important;
|
112
112
|
}
|
113
113
|
|
114
114
|
.rorvswild-local-panel .token.important,
|
@@ -132,5 +132,5 @@ http://prismjs.com/download.html?themes=prism-twilight&languages=markup+css+clik
|
|
132
132
|
.rorvswild-local-panel .language-markup .token.tag,
|
133
133
|
.rorvswild-local-panel .language-markup .token.attr-name,
|
134
134
|
.rorvswild-local-panel .language-markup .token.punctuation {
|
135
|
-
color:
|
135
|
+
color: rgb(133,139,150) !important;
|
136
136
|
}
|
@@ -16,6 +16,8 @@ module RorVsWild
|
|
16
16
|
section.file, section.line = job.method(:perform).source_location
|
17
17
|
section.file = RorVsWild.agent.locator.relative_path(section.file)
|
18
18
|
block.call
|
19
|
+
rescue Exception => ex
|
20
|
+
job.rescue_with_handler(ex) or raise
|
19
21
|
ensure
|
20
22
|
RorVsWild::Section.stop
|
21
23
|
end
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module RorVsWild
|
2
4
|
module Plugin
|
3
5
|
class ActiveRecord
|
@@ -19,8 +21,8 @@ module RorVsWild
|
|
19
21
|
return if IGNORED_QUERIES.include?(payload[:name])
|
20
22
|
RorVsWild::Section.start do |section|
|
21
23
|
section.appendable_command = APPENDABLE_QUERIES.include?(payload[:sql])
|
22
|
-
section.command = payload[:sql]
|
23
|
-
section.kind = "sql"
|
24
|
+
section.command = normalize_sql_query(payload[:sql])
|
25
|
+
section.kind = "sql"
|
24
26
|
end
|
25
27
|
end
|
26
28
|
|
@@ -28,6 +30,24 @@ module RorVsWild
|
|
28
30
|
return if IGNORED_QUERIES.include?(payload[:name])
|
29
31
|
RorVsWild::Section.stop
|
30
32
|
end
|
33
|
+
|
34
|
+
SQL_STRING_REGEX = /'((?:''|\\'|[^'])*)'/
|
35
|
+
SQL_NUMERIC_REGEX = /(?<!\w)\d+(\.\d+)?(?!\w)/
|
36
|
+
SQL_PARAMETER_REGEX = /\$\d+/
|
37
|
+
SQL_IN_REGEX = /(\bIN\s*\()([^)]+)(\))/i
|
38
|
+
SQL_ONE_LINE_COMMENT_REGEX =/--.*$/
|
39
|
+
SQL_MULTI_LINE_COMMENT_REGEX = /\/\*.*?\*\//m
|
40
|
+
|
41
|
+
def normalize_sql_query(sql)
|
42
|
+
sql = sql.to_s.gsub(SQL_STRING_REGEX, "?")
|
43
|
+
sql.gsub!(SQL_PARAMETER_REGEX, "?")
|
44
|
+
sql.gsub!(SQL_NUMERIC_REGEX, "?")
|
45
|
+
sql.gsub!(SQL_IN_REGEX, '\1?\3')
|
46
|
+
sql.gsub!(SQL_ONE_LINE_COMMENT_REGEX, "")
|
47
|
+
sql.gsub!(SQL_MULTI_LINE_COMMENT_REGEX, "")
|
48
|
+
sql.strip!
|
49
|
+
sql
|
50
|
+
end
|
31
51
|
end
|
32
52
|
end
|
33
53
|
end
|
data/lib/rorvswild/queue.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module RorVsWild
|
2
4
|
class Queue
|
3
5
|
SLEEP_TIME = 10
|
@@ -56,6 +58,7 @@ module RorVsWild
|
|
56
58
|
end
|
57
59
|
|
58
60
|
def flush_indefinetely
|
61
|
+
client.post("/deployments", deployment: Deployment.to_h)
|
59
62
|
sleep(SLEEP_TIME) and flush while true
|
60
63
|
rescue Exception => ex
|
61
64
|
RorVsWild.logger.error(ex)
|
data/lib/rorvswild/section.rb
CHANGED
data/lib/rorvswild/version.rb
CHANGED
data/lib/rorvswild.rb
CHANGED
@@ -68,6 +68,7 @@ module RorVsWild
|
|
68
68
|
|
69
69
|
def self.check
|
70
70
|
api_key = RorVsWild.agent.config[:api_key]
|
71
|
+
agent.client.instance_variable_set(:@http_unauthorized, false)
|
71
72
|
return puts "You API key is missing and has to be defined in config/rorvswild.yml." if !api_key || api_key.empty?
|
72
73
|
puts case response = agent.client.post("/jobs", jobs: [{sections: [], name: "RorVsWild.check", runtime: 0}])
|
73
74
|
when Net::HTTPOK then "Connection to RorVsWild works fine !"
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rorvswild
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.6.
|
4
|
+
version: 1.6.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Alexis Bernard
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2023-
|
12
|
+
date: 2023-11-17 00:00:00.000000000 Z
|
13
13
|
dependencies: []
|
14
14
|
description: Performances and errors insights for rails developers.
|
15
15
|
email:
|