rorvswild 1.7.1 → 1.8.0
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 +38 -11
- data/lib/rorvswild/local/javascript/local.js +201 -36
- data/lib/rorvswild/local/local.html.erb +266 -68
- data/lib/rorvswild/local/middleware.rb +16 -0
- data/lib/rorvswild/local/queue.rb +45 -7
- data/lib/rorvswild/local/stylesheet/local.css +261 -59
- data/lib/rorvswild/local/stylesheet/vendor/prism.css +1 -1
- data/lib/rorvswild/local.rb +1 -1
- data/lib/rorvswild/plugin/action_controller.rb +1 -1
- data/lib/rorvswild/plugin/action_mailer.rb +1 -1
- data/lib/rorvswild/plugin/action_view.rb +1 -1
- data/lib/rorvswild/plugin/active_job.rb +1 -1
- data/lib/rorvswild/plugin/active_record.rb +1 -3
- data/lib/rorvswild/plugin/middleware.rb +7 -7
- data/lib/rorvswild/plugin/redis.rb +2 -6
- data/lib/rorvswild/queue.rb +4 -0
- data/lib/rorvswild/section.rb +62 -29
- data/lib/rorvswild/version.rb +1 -1
- data/lib/rorvswild.rb +13 -3
- metadata +3 -3
@@ -100,18 +100,51 @@
|
|
100
100
|
}
|
101
101
|
|
102
102
|
.rorvswild-local-panel__header .rorvswild-local-panel__width-limiter {
|
103
|
-
display: flex;
|
104
|
-
|
103
|
+
display: flex !important;
|
104
|
+
align-items: center !important;
|
105
|
+
gap: 24px !important;
|
106
|
+
padding: 0 12px !important;
|
105
107
|
}
|
106
108
|
|
107
|
-
|
108
|
-
.rorvswild-local-panel__header__title {
|
109
|
-
color: rgb(199 203 214) !important;
|
109
|
+
.rorvswild-local-panel__header nav {
|
110
110
|
text-transform: uppercase !important;
|
111
111
|
font-size: 12px !important;
|
112
|
-
|
113
|
-
|
114
|
-
flex: 1;
|
112
|
+
font-weight: 700 !important;
|
113
|
+
letter-spacing: 1px !important;
|
114
|
+
flex: 1 !important;
|
115
|
+
}
|
116
|
+
|
117
|
+
.rorvswild-local-panel__header nav ul {
|
118
|
+
padding: 0 !important;
|
119
|
+
margin: 0 !important;
|
120
|
+
list-style-type: none !important;
|
121
|
+
display: flex !important;
|
122
|
+
gap: 12px !important;
|
123
|
+
}
|
124
|
+
|
125
|
+
.rorvswild-local-panel__header nav li {
|
126
|
+
color: rgb(146 149 159) !important;
|
127
|
+
cursor: pointer !important;
|
128
|
+
line-height: 48px !important;
|
129
|
+
}
|
130
|
+
|
131
|
+
.rorvswild-local-panel__header nav li:hover {
|
132
|
+
color: rgb(199 203 214) !important;
|
133
|
+
}
|
134
|
+
|
135
|
+
[data-tab="requests"] .tab--requests {
|
136
|
+
color: rgb(199 203 214) !important;
|
137
|
+
box-shadow: 0 -3px 0 0 rgb(199 203 214) inset !important;
|
138
|
+
}
|
139
|
+
|
140
|
+
[data-tab="jobs"] .tab--jobs {
|
141
|
+
color: rgb(199 203 214) !important;
|
142
|
+
box-shadow: 0 -3px 0 0 rgb(199 203 214) inset !important;
|
143
|
+
}
|
144
|
+
|
145
|
+
[data-tab="errors"] .tab--errors {
|
146
|
+
color: rgb(199 203 214) !important;
|
147
|
+
box-shadow: 0 -3px 0 0 rgb(199 203 214) inset !important;
|
115
148
|
}
|
116
149
|
|
117
150
|
.rorvswild-local-panel svg {
|
@@ -127,8 +160,6 @@
|
|
127
160
|
|
128
161
|
.rorvswild-local-panel svg:hover { stroke: rgb(199 203 214) !important; }
|
129
162
|
|
130
|
-
.rorvswild-local-panel__logo { width: 60px !important; }
|
131
|
-
|
132
163
|
.rorvswild-local-panel__header__icons {
|
133
164
|
width: 60px !important;
|
134
165
|
display: flex !important;
|
@@ -158,6 +189,14 @@
|
|
158
189
|
overscroll-behavior: contain;
|
159
190
|
}
|
160
191
|
|
192
|
+
.rorvswild-local-panel--blank {
|
193
|
+
text-align: center !important;
|
194
|
+
margin: 0 auto !important;
|
195
|
+
font-size: 31px !important;
|
196
|
+
line-height: calc(100dvh - 120px) !important;
|
197
|
+
color: rgb(26 29 36) !important;
|
198
|
+
}
|
199
|
+
|
161
200
|
.rorvswild-local-panel__content::-webkit-scrollbar { width: 4px !important; }
|
162
201
|
|
163
202
|
.rorvswild-local-panel__content::-webkit-scrollbar-corner { background: transparent !important; }
|
@@ -173,7 +212,7 @@
|
|
173
212
|
}
|
174
213
|
|
175
214
|
/* Panel request summary */
|
176
|
-
.rorvswild-local-
|
215
|
+
.rorvswild-local-panel__row {
|
177
216
|
display: flex !important;
|
178
217
|
padding: 12px 12px 11px !important;
|
179
218
|
border-bottom: 1px solid rgb(26 29 36) !important;
|
@@ -181,24 +220,52 @@
|
|
181
220
|
flex-wrap: wrap !important;
|
182
221
|
}
|
183
222
|
|
184
|
-
.rorvswild-local-
|
223
|
+
.rorvswild-local-panel__row:first-of-type {
|
224
|
+
margin-top: 12px !important;
|
225
|
+
}
|
226
|
+
|
227
|
+
.rorvswild-local-panel__row:hover { background: rgb(26 29 36) !important; }
|
185
228
|
|
186
|
-
.rorvswild-local-
|
229
|
+
.rorvswild-local-panel__name {
|
187
230
|
word-break: break-all !important;
|
188
231
|
overflow-wrap: break-word !important;
|
189
232
|
width: 100% !important;
|
190
233
|
color: rgb(199 203 214) !important;
|
191
|
-
font-weight: 700;
|
234
|
+
font-weight: 700 !important;
|
192
235
|
}
|
193
236
|
|
194
|
-
.rorvswild-local-
|
195
|
-
|
196
|
-
|
197
|
-
text-decoration-
|
198
|
-
text-
|
237
|
+
.rorvswild-local-panel__row:hover .rorvswild-local-panel__name { color: rgb(223 228 242) !important; }
|
238
|
+
|
239
|
+
.rorvswild-local-panel__row .rorvswild-local-panel__name > span {
|
240
|
+
text-decoration-color: rgb(146 149 159) !important;
|
241
|
+
text-decoration: underline !important;
|
242
|
+
text-decoration-thickness: 1px !important;
|
243
|
+
text-underline-offset: 1px !important;
|
244
|
+
}
|
245
|
+
|
246
|
+
.rorvswild-local-panel__row.rorvswild-local-panel__error .rorvswild-local-panel__name {
|
247
|
+
color: rgb(146 149 159) !important;
|
248
|
+
font-weight: 400 !important;
|
249
|
+
word-break: keep-all;
|
250
|
+
text-overflow: ellipsis;
|
251
|
+
white-space: nowrap;
|
252
|
+
overflow: hidden;
|
253
|
+
}
|
254
|
+
|
255
|
+
.rorvswild-local-panel__row.rorvswild-local-panel__error .rorvswild-local-panel__name > span,
|
256
|
+
.rorvswild-local-panel__error .rorvswild-local-panel__title {
|
257
|
+
color: rgb(255 184 172) !important;
|
258
|
+
font-weight: 700 !important;
|
199
259
|
}
|
200
260
|
|
201
|
-
.rorvswild-local-
|
261
|
+
.rorvswild-local-panel__row.rorvswild-local-panel__error:hover .rorvswild-local-panel__name > span { color: rgb(255 220 214) !important; }
|
262
|
+
|
263
|
+
|
264
|
+
.rorvswild-local-panel__error .rorvswild-local-panel__path {
|
265
|
+
color: rgb(199 203 214) !important;
|
266
|
+
}
|
267
|
+
|
268
|
+
.rorvswild-local-panel__path {
|
202
269
|
color: rgb(146 149 159) !important;
|
203
270
|
font-weight: 400;
|
204
271
|
display: block !important;
|
@@ -207,12 +274,12 @@
|
|
207
274
|
text-decoration-color: transparent !important;
|
208
275
|
}
|
209
276
|
|
210
|
-
.rorvswild-local-
|
277
|
+
.rorvswild-local-panel__started-at {
|
211
278
|
color: rgb(146 149 159) !important;
|
212
279
|
margin-left: 12px !important;
|
213
280
|
}
|
214
281
|
|
215
|
-
.rorvswild-local-
|
282
|
+
.rorvswild-local-panel__runtime {
|
216
283
|
color: rgb(182 202 255) !important;
|
217
284
|
font-weight: 700 !important;
|
218
285
|
}
|
@@ -224,14 +291,14 @@
|
|
224
291
|
display: block !important;
|
225
292
|
}
|
226
293
|
|
227
|
-
.rorvswild-local-
|
294
|
+
.rorvswild-local-panel__details__header {
|
228
295
|
display: flex !important;
|
229
|
-
margin-bottom:
|
230
|
-
padding:
|
296
|
+
margin-bottom: 36px !important;
|
297
|
+
padding: 48px 12px 0 !important;
|
231
298
|
flex-wrap: wrap !important;
|
232
299
|
}
|
233
300
|
|
234
|
-
h2.rorvswild-local-
|
301
|
+
h2.rorvswild-local-panel__title {
|
235
302
|
margin:-18px 0 0 !important;
|
236
303
|
padding:0 !important;
|
237
304
|
font-size: 31px !important;
|
@@ -242,25 +309,60 @@ h2.rorvswild-local-panel__request__name__title {
|
|
242
309
|
}
|
243
310
|
|
244
311
|
/* details sections */
|
245
|
-
.rorvswild-local-
|
312
|
+
.rorvswild-local-panel__breakdown {
|
313
|
+
display: flex !important;
|
314
|
+
position: relative !important;
|
315
|
+
width: calc(100% - 24px) !important;
|
316
|
+
margin: 0 12px 12px !important;
|
317
|
+
padding: 0 !important;
|
318
|
+
text-align: center !important;
|
319
|
+
}
|
320
|
+
|
321
|
+
.rorvswild-local-panel__breakdown li {
|
322
|
+
display: inline-block !important;
|
323
|
+
margin: 0 !important;
|
324
|
+
padding: 0 8px !important;
|
325
|
+
white-space: nowrap !important;
|
326
|
+
overflow: hidden !important;
|
327
|
+
border: 1px solid rgb(26 29 36) !important;
|
328
|
+
font-size: 10px !important;
|
329
|
+
text-transform: uppercase !important;
|
330
|
+
letter-spacing: 1px !important;
|
331
|
+
}
|
332
|
+
|
333
|
+
.rorvswild-local-panel__breakdown li:first-of-type { background-color:rgba(199, 203, 214, .08) !important; }
|
334
|
+
|
335
|
+
.rorvswild-local-panel__breakdown li:nth-of-type(2) { background-color:rgba(199, 203, 214, .04) !important; }
|
336
|
+
|
337
|
+
.rorvswild-local-panel__breakdown li:nth-of-type(3) { background-color:rgba(199, 203, 214, .02) !important; }
|
338
|
+
|
339
|
+
.rorvswild-local-panel__breakdown__label {
|
340
|
+
display: inline-block;
|
341
|
+
font-weight: 400;
|
342
|
+
margin-right: 4px;
|
343
|
+
}
|
344
|
+
|
345
|
+
.rorvswild-local-panel__breakdown__value { font-weight: 700; }
|
346
|
+
|
347
|
+
.rorvswild-local-panel__details__section {
|
246
348
|
padding: 12px 12px 11px !important;
|
247
349
|
border-bottom: 1px solid rgb(26 29 36) !important;
|
248
350
|
display: block !important;
|
249
351
|
}
|
250
352
|
|
251
|
-
.rorvswild-local-
|
353
|
+
.rorvswild-local-panel__details__section:hover {
|
252
354
|
background: rgb(26 29 36) !important;
|
253
355
|
transition: all .3s !important;
|
254
356
|
}
|
255
357
|
|
256
|
-
.rorvswild-local-
|
358
|
+
.rorvswild-local-panel__details__section__main {
|
257
359
|
display: flex !important;
|
258
360
|
gap: 8px;
|
259
361
|
width: 100% !important;
|
260
362
|
flex-wrap: wrap !important;
|
261
363
|
}
|
262
364
|
|
263
|
-
.rorvswild-local-
|
365
|
+
.rorvswild-local-panel__details__section__file {
|
264
366
|
width: 100% !important;
|
265
367
|
word-break: break-all !important;
|
266
368
|
overflow-wrap: break-word !important;
|
@@ -270,16 +372,19 @@ h2.rorvswild-local-panel__request__name__title {
|
|
270
372
|
gap: 8px;
|
271
373
|
}
|
272
374
|
|
273
|
-
a.rorvswild-local-
|
375
|
+
a.rorvswild-local-panel__file__name {
|
274
376
|
text-decoration-color: rgb(146 149 159);
|
275
377
|
font-weight: 700;
|
276
378
|
text-decoration-thickness: 1px;
|
277
379
|
text-underline-offset: 1px;
|
278
380
|
}
|
279
381
|
|
280
|
-
a.rorvswild-local-
|
382
|
+
a.rorvswild-local-panel__file__name:hover {
|
383
|
+
color: rgb(223 228 242) !important;
|
384
|
+
text-decoration-color: rgb(199 203 214);
|
385
|
+
}
|
281
386
|
|
282
|
-
a.rorvswild-local-
|
387
|
+
a.rorvswild-local-panel__file__name::after {
|
283
388
|
content: '↗';
|
284
389
|
text-decoration: none;
|
285
390
|
display: inline-block;
|
@@ -287,15 +392,15 @@ a.rorvswild-local-panel__request-details__section__file__name::after {
|
|
287
392
|
opacity: 0.5;
|
288
393
|
}
|
289
394
|
|
290
|
-
a.rorvswild-local-
|
395
|
+
a.rorvswild-local-panel__file__name:hover::after { opacity: 1; }
|
291
396
|
|
292
|
-
.rorvswild-local-
|
397
|
+
.rorvswild-local-panel__file__name span {
|
293
398
|
background: rgb(38 41 49);
|
294
399
|
text-decoration: none;
|
295
400
|
display: inline-block;
|
296
401
|
}
|
297
402
|
|
298
|
-
.rorvswild-local-
|
403
|
+
.rorvswild-local-panel__details__section__average {
|
299
404
|
color: rgb(182 202 255) !important;
|
300
405
|
font-weight: 700 !important;
|
301
406
|
width: 48px !important;
|
@@ -303,20 +408,20 @@ a.rorvswild-local-panel__request-details__section__file__name:hover::after { opa
|
|
303
408
|
margin-left: auto;
|
304
409
|
}
|
305
410
|
|
306
|
-
.rorvswild-local-
|
411
|
+
.rorvswild-local-panel__details__section__calls {
|
307
412
|
color: rgb(199 203 214) !important;
|
308
413
|
width: 48px !important;
|
309
414
|
text-align: right;
|
310
415
|
}
|
311
416
|
|
312
|
-
.rorvswild-local-
|
417
|
+
.rorvswild-local-panel__details__section__impact {
|
313
418
|
color: rgb(199 203 214) !important;
|
314
419
|
width: 48px !important;
|
315
420
|
font-weight: 700 !important;
|
316
421
|
text-align: right;
|
317
422
|
}
|
318
423
|
|
319
|
-
.rorvswild-local-
|
424
|
+
.rorvswild-local-panel__details__section__code {
|
320
425
|
color: rgb(146 149 159) !important;
|
321
426
|
background: rgb(14 15 20);
|
322
427
|
padding: 12px;
|
@@ -325,7 +430,40 @@ a.rorvswild-local-panel__request-details__section__file__name:hover::after { opa
|
|
325
430
|
display: none;
|
326
431
|
}
|
327
432
|
|
328
|
-
.rorvswild-local-
|
433
|
+
.rorvswild-local-panel__details__section__code dl {
|
434
|
+
display: flex;
|
435
|
+
align-items: baseline;
|
436
|
+
justify-content: flex-end;
|
437
|
+
flex-wrap: wrap;
|
438
|
+
margin: 0;
|
439
|
+
padding: 0;
|
440
|
+
text-align: right;
|
441
|
+
gap: 12px 24px;
|
442
|
+
}
|
443
|
+
|
444
|
+
.rorvswild-local-panel__details__section__code dt {
|
445
|
+
white-space: nowrap;
|
446
|
+
margin: 0;
|
447
|
+
text-transform: uppercase;
|
448
|
+
letter-spacing: 1px;
|
449
|
+
font-size: 9px !important;
|
450
|
+
}
|
451
|
+
|
452
|
+
.rorvswild-local-panel__details__section__code dd {
|
453
|
+
margin: 0;
|
454
|
+
color: rgb(182 202 255) !important;
|
455
|
+
font-weight: 700;
|
456
|
+
}
|
457
|
+
|
458
|
+
.rorvswild-local-panel__details__section__code dd.dd--calls {
|
459
|
+
color: rgb(199 203 214) !important;
|
460
|
+
}
|
461
|
+
|
462
|
+
.rorvswild-local-panel__details__section__code dl + pre[class*="language-"] {
|
463
|
+
margin-top: 12px !important;
|
464
|
+
}
|
465
|
+
|
466
|
+
.rorvswild-local-panel__details__section__kind {
|
329
467
|
background: rgb(38 41 49);
|
330
468
|
font-size: 10px !important;
|
331
469
|
text-transform: uppercase !important;
|
@@ -339,23 +477,27 @@ a.rorvswild-local-panel__request-details__section__file__name:hover::after { opa
|
|
339
477
|
flex-shrink: 0;
|
340
478
|
}
|
341
479
|
|
342
|
-
button.rorvswild-local-
|
343
|
-
box-shadow: 0 0 0 1px rgb(72 75 80) inset;
|
344
|
-
border: none;
|
345
|
-
font-weight: 700;
|
346
|
-
position: relative;
|
480
|
+
button.rorvswild-local-panel__details__section__kind {
|
481
|
+
box-shadow: 0 0 0 1px rgb(72 75 80) inset !important;
|
482
|
+
border: none !important;
|
483
|
+
font-weight: 700 !important;
|
484
|
+
position: relative !important;
|
485
|
+
cursor: pointer !important;
|
347
486
|
}
|
348
487
|
|
349
|
-
button.rorvswild-local-
|
488
|
+
button.rorvswild-local-panel__details__section__kind span {
|
350
489
|
display: inline-block;
|
351
490
|
max-width: calc(5ch + 5px);
|
352
491
|
white-space: nowrap;
|
353
492
|
overflow: hidden;
|
354
493
|
}
|
355
494
|
|
356
|
-
button.rorvswild-local-
|
495
|
+
button.rorvswild-local-panel__details__section__kind:hover {
|
496
|
+
box-shadow: 0 0 0 1px rgb(147 149 156) inset;
|
497
|
+
background-color: rgb(14 15 20) !important;
|
498
|
+
}
|
357
499
|
|
358
|
-
button.rorvswild-local-
|
500
|
+
button.rorvswild-local-panel__details__section__kind::after {
|
359
501
|
content: "";
|
360
502
|
display: block;
|
361
503
|
box-sizing: border-box;
|
@@ -369,28 +511,88 @@ button.rorvswild-local-panel__request-details__section__kind::after {
|
|
369
511
|
top:calc(50% - 3px);
|
370
512
|
}
|
371
513
|
|
372
|
-
button.rorvswild-local-
|
514
|
+
button.rorvswild-local-panel__details__section__kind:hover::after { border-color: inherit; }
|
373
515
|
|
374
|
-
span.rorvswild-local-
|
516
|
+
span.rorvswild-local-panel__details__section__kind {
|
375
517
|
background: rgb(14 15 20) !important;
|
376
518
|
color: rgb(146 149 159)!important;
|
377
519
|
}
|
378
520
|
|
379
|
-
.rorvswild-local-
|
380
|
-
display:
|
521
|
+
.rorvswild-local-panel__details__section.is-open .rorvswild-local-panel__details__section__code {
|
522
|
+
display: block;
|
381
523
|
border-bottom: 1px solid rgb(26 29 36) !important
|
382
524
|
}
|
383
525
|
|
384
|
-
.rorvswild-local-
|
526
|
+
.rorvswild-local-panel__details__section.is-open .rorvswild-local-panel__details__section__kind {
|
385
527
|
color: rgb(182 202 255) !important;
|
386
528
|
background-color: rgb(14 15 20) !important;
|
387
529
|
}
|
388
530
|
|
389
|
-
.rorvswild-local-
|
531
|
+
.rorvswild-local-panel__details__section.is-open .rorvswild-local-panel__details__section__kind::after {
|
390
532
|
transform: rotate(225deg);
|
391
533
|
transform-origin: 2.5px 3px;
|
392
534
|
}
|
393
535
|
|
536
|
+
.rorvswild-local-panel__card {
|
537
|
+
padding: 12px;
|
538
|
+
border: 1px solid rgb(26 29 36) !important;
|
539
|
+
}
|
540
|
+
|
541
|
+
.rorvswild-local-panel__card + .rorvswild-local-panel__card {
|
542
|
+
margin-top: 24px;
|
543
|
+
}
|
544
|
+
|
545
|
+
.rorvswild-local-panel__card__title {
|
546
|
+
color: rgb(146 149 159) !important;
|
547
|
+
text-align: center;
|
548
|
+
text-transform: uppercase;
|
549
|
+
font-size: 10px !important;
|
550
|
+
letter-spacing: 1px;
|
551
|
+
margin: 0 !important;
|
552
|
+
padding: 0 0 12px !important;
|
553
|
+
line-height: 24px !important;
|
554
|
+
}
|
555
|
+
|
556
|
+
.rorvswild-local-panel__card > * + * {
|
557
|
+
margin-top: 12px;
|
558
|
+
}
|
559
|
+
|
560
|
+
.rorvswild-local-panel__card summary:hover {
|
561
|
+
cursor: pointer;
|
562
|
+
color: rgb(223 228 242) !important;
|
563
|
+
}
|
564
|
+
|
565
|
+
.rorvswild-local-panel__card dl {
|
566
|
+
padding: 0;
|
567
|
+
margin: 0 -12px -12px;
|
568
|
+
}
|
569
|
+
|
570
|
+
.rorvswild-local-panel__card dl div {
|
571
|
+
display: grid;
|
572
|
+
grid-template-columns: 112px auto;
|
573
|
+
padding: 12px;
|
574
|
+
}
|
575
|
+
|
576
|
+
.rorvswild-local-panel__card dl div:hover {
|
577
|
+
background:rgb(26 29 36);
|
578
|
+
}
|
579
|
+
|
580
|
+
.rorvswild-local-panel__card dl div + div {
|
581
|
+
border-top: 1px solid rgb(26 29 36);
|
582
|
+
}
|
583
|
+
|
584
|
+
.rorvswild-local-panel__card dt {
|
585
|
+
color: rgb(146 149 159) !important;
|
586
|
+
text-transform: uppercase;
|
587
|
+
font-size: 10px !important;
|
588
|
+
letter-spacing: 1px;
|
589
|
+
}
|
590
|
+
|
591
|
+
.rorvswild-local-panel__card dd {
|
592
|
+
word-break: break-all !important;
|
593
|
+
overflow-wrap: break-word !important;
|
594
|
+
}
|
595
|
+
|
394
596
|
/* Panel Footer */
|
395
597
|
.rorvswild-local-panel__footer {
|
396
598
|
width: 100% !important;
|
@@ -407,15 +609,15 @@ a.rorvswild-local-panel__footer__link {
|
|
407
609
|
}
|
408
610
|
|
409
611
|
@media screen and (min-width: 720px) {
|
410
|
-
.rorvswild-local-
|
612
|
+
.rorvswild-local-panel__details__section__main { flex-wrap: nowrap !important; }
|
411
613
|
|
412
|
-
.rorvswild-local-
|
413
|
-
.rorvswild-local-
|
614
|
+
.rorvswild-local-panel__name,
|
615
|
+
.rorvswild-local-panel__details__section__file { flex: 1 !important; }
|
414
616
|
|
415
|
-
.rorvswild-local-
|
617
|
+
.rorvswild-local-panel__runtime { margin-left: 12px !important; }
|
416
618
|
|
417
619
|
.rorvswild-local-panel__width-limiter {
|
418
620
|
max-width: 1520px;
|
419
621
|
margin: 0 auto;
|
420
622
|
}
|
421
|
-
}
|
623
|
+
}
|
@@ -18,7 +18,7 @@ http://prismjs.com/download.html?themes=prism-twilight&languages=markup+css+clik
|
|
18
18
|
line-height: 24px !important;
|
19
19
|
font-weight: 300 !important;
|
20
20
|
|
21
|
-
white-space: pre-
|
21
|
+
white-space: pre-wrap !important;
|
22
22
|
word-wrap: break-word !important;
|
23
23
|
word-break: keep-all !important;
|
24
24
|
|
data/lib/rorvswild/local.rb
CHANGED
@@ -4,8 +4,8 @@ require "rorvswild/local/queue"
|
|
4
4
|
module RorVsWild
|
5
5
|
module Local
|
6
6
|
def self.start(config = {})
|
7
|
-
Rails.application.config.middleware.unshift(RorVsWild::Local::Middleware, nil)
|
8
7
|
RorVsWild.start(config.merge(queue: RorVsWild::Local::Queue.new))
|
8
|
+
Rails.application.config.middleware.unshift(RorVsWild::Local::Middleware, nil)
|
9
9
|
end
|
10
10
|
end
|
11
11
|
end
|
@@ -22,7 +22,7 @@ module RorVsWild
|
|
22
22
|
if method_name = controller.send(:method_for_action, controller.action_name)
|
23
23
|
section.file, section.line = controller.method(method_name).source_location
|
24
24
|
section.file = RorVsWild.agent.locator.relative_path(section.file)
|
25
|
-
section.
|
25
|
+
section.commands << "#{controller.class}##{method_name}"
|
26
26
|
end
|
27
27
|
RorVsWild.agent.current_data[:name] = controller_action if RorVsWild.agent.current_data
|
28
28
|
end
|
@@ -16,7 +16,7 @@ module RorVsWild
|
|
16
16
|
def finish(name, id, payload)
|
17
17
|
RorVsWild::Section.stop do |section|
|
18
18
|
section.kind = "view".freeze
|
19
|
-
section.
|
19
|
+
section.commands << RorVsWild.agent.locator.relative_path(payload[:identifier])
|
20
20
|
section.file = section.command
|
21
21
|
section.line = 1
|
22
22
|
end
|
@@ -12,7 +12,7 @@ module RorVsWild
|
|
12
12
|
RorVsWild.agent.measure_job(job.class.name, parameters: job.arguments) do
|
13
13
|
begin
|
14
14
|
section = RorVsWild::Section.start
|
15
|
-
section.
|
15
|
+
section.commands << "#{job.class}#perform"
|
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
|
@@ -15,13 +15,11 @@ module RorVsWild
|
|
15
15
|
end
|
16
16
|
|
17
17
|
IGNORED_QUERIES = %w[EXPLAIN SCHEMA].freeze
|
18
|
-
APPENDABLE_QUERIES = ["BEGIN", "COMMIT"].freeze
|
19
18
|
|
20
19
|
def start(name, id, payload)
|
21
20
|
return if IGNORED_QUERIES.include?(payload[:name])
|
22
21
|
RorVsWild::Section.start do |section|
|
23
|
-
section.
|
24
|
-
section.command = normalize_sql_query(payload[:sql])
|
22
|
+
section.commands << normalize_sql_query(payload[:sql])
|
25
23
|
section.kind = "sql"
|
26
24
|
end
|
27
25
|
end
|
@@ -18,7 +18,7 @@ module RorVsWild
|
|
18
18
|
RorVsWild.agent.current_data[:path] = env["ORIGINAL_FULLPATH"]
|
19
19
|
section = RorVsWild::Section.start
|
20
20
|
section.file, section.line = rails_engine_location
|
21
|
-
section.
|
21
|
+
section.commands << "Rails::Engine#call"
|
22
22
|
code, headers, body = @app.call(env)
|
23
23
|
[code, headers, body]
|
24
24
|
ensure
|
@@ -35,21 +35,21 @@ module RorVsWild
|
|
35
35
|
def format_server_timing_header(sections)
|
36
36
|
sections.map do |section|
|
37
37
|
if section.kind == "view"
|
38
|
-
"#{section.kind};dur=#{section.
|
38
|
+
"#{section.kind};dur=#{section.self_ms.round};desc=\"#{section.file}\""
|
39
39
|
else
|
40
|
-
"#{section.kind};dur=#{section.
|
40
|
+
"#{section.kind};dur=#{section.self_ms.round};desc=\"#{section.file}:#{section.line}\""
|
41
41
|
end
|
42
42
|
end.join(", ")
|
43
43
|
end
|
44
44
|
|
45
45
|
def format_server_timing_ascii(sections, total_width = 80)
|
46
|
-
max_time = sections.map(&:
|
46
|
+
max_time = sections.map(&:self_ms).max
|
47
47
|
chart_width = (total_width * 0.25).to_i
|
48
48
|
rows = sections.map { |section|
|
49
49
|
[
|
50
50
|
section.kind == "view" ? section.file : "#{section.file}:#{section.line}",
|
51
|
-
"█" * (section.
|
52
|
-
"
|
51
|
+
"█" * (section.self_ms * (chart_width-1) / max_time),
|
52
|
+
"%.1fms" % section.self_ms,
|
53
53
|
]
|
54
54
|
}
|
55
55
|
time_width = rows.map { |cols| cols[2].size }.max + 1
|
@@ -65,7 +65,7 @@ module RorVsWild
|
|
65
65
|
|
66
66
|
def inject_server_timing(data, headers)
|
67
67
|
return if !data || !data[:send_server_timing] || !(sections = data[:sections])
|
68
|
-
sections = sections.sort_by(&:
|
68
|
+
sections = sections.sort_by(&:self_ms).reverse[0,10]
|
69
69
|
headers["Server-Timing"] = format_server_timing_header(sections)
|
70
70
|
if data[:name] && RorVsWild.logger.level <= Logger::Severity::DEBUG
|
71
71
|
RorVsWild.logger.debug(["┤ #{data[:name]} ├".center(80, "─"),
|
@@ -15,8 +15,7 @@ module RorVsWild
|
|
15
15
|
module V4
|
16
16
|
def process(commands, &block)
|
17
17
|
string = commands.map(&:first).join("\n")
|
18
|
-
|
19
|
-
RorVsWild.agent.measure_section(string, appendable_command: appendable, kind: "redis") do
|
18
|
+
RorVsWild.agent.measure_section(string, kind: "redis") do
|
20
19
|
super(commands, &block)
|
21
20
|
end
|
22
21
|
end
|
@@ -24,8 +23,7 @@ module RorVsWild
|
|
24
23
|
|
25
24
|
module V5
|
26
25
|
def send_command(command, &block)
|
27
|
-
|
28
|
-
RorVsWild.agent.measure_section(command[0], appendable_command: appendable, kind: "redis") do
|
26
|
+
RorVsWild.agent.measure_section(command[0], kind: "redis") do
|
29
27
|
super(command, &block)
|
30
28
|
end
|
31
29
|
end
|
@@ -38,8 +36,6 @@ module RorVsWild
|
|
38
36
|
RorVsWild.agent.measure_section("multi", kind: "redis") { super }
|
39
37
|
end
|
40
38
|
end
|
41
|
-
|
42
|
-
APPENDABLE_COMMANDS = [:auth, :select]
|
43
39
|
end
|
44
40
|
end
|
45
41
|
end
|
data/lib/rorvswild/queue.rb
CHANGED
@@ -27,6 +27,10 @@ module RorVsWild
|
|
27
27
|
push_to(requests, data) if !@request_sampling_rate || rand <= @request_sampling_rate
|
28
28
|
end
|
29
29
|
|
30
|
+
def push_error(data)
|
31
|
+
client.post_async("/errors", error: data)
|
32
|
+
end
|
33
|
+
|
30
34
|
def push_to(array, data)
|
31
35
|
mutex.synchronize do
|
32
36
|
wakeup_thread if array.push(data).size >= FLUSH_TRESHOLD || !thread
|