better_rails_debugger 0.0.1

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.
Files changed (74) hide show
  1. checksums.yaml +7 -0
  2. data/MIT-LICENSE +20 -0
  3. data/README.md +98 -0
  4. data/Rakefile +36 -0
  5. data/app/assets/config/better_rails_debugger_manifest.js +2 -0
  6. data/app/assets/images/avatars/1.jpg +0 -0
  7. data/app/assets/images/avatars/2.jpg +0 -0
  8. data/app/assets/images/avatars/3.jpg +0 -0
  9. data/app/assets/images/avatars/4.jpg +0 -0
  10. data/app/assets/images/avatars/5.jpg +0 -0
  11. data/app/assets/images/avatars/6.jpg +0 -0
  12. data/app/assets/images/avatars/7.jpg +0 -0
  13. data/app/assets/images/avatars/8.jpg +0 -0
  14. data/app/assets/images/favicon.png +0 -0
  15. data/app/assets/images/logo-symbol.png +0 -0
  16. data/app/assets/images/logo.png +0 -0
  17. data/app/assets/javascripts/better_rails_debugger/Chart.min.js +10 -0
  18. data/app/assets/javascripts/better_rails_debugger/app.js +146 -0
  19. data/app/assets/javascripts/better_rails_debugger/application.js +24 -0
  20. data/app/assets/javascripts/better_rails_debugger/bootstrap.min.js +7 -0
  21. data/app/assets/javascripts/better_rails_debugger/jquery-3.0.0.min.js +4 -0
  22. data/app/assets/javascripts/better_rails_debugger/jquery.min.js +4 -0
  23. data/app/assets/javascripts/better_rails_debugger/moment.min.js +7 -0
  24. data/app/assets/javascripts/better_rails_debugger/pace.min.js +2 -0
  25. data/app/assets/javascripts/better_rails_debugger/popper.min.js +5 -0
  26. data/app/assets/javascripts/better_rails_debugger/popper.min.js.map +1 -0
  27. data/app/assets/javascripts/better_rails_debugger/prism.js +7 -0
  28. data/app/assets/javascripts/better_rails_debugger/views/charts.js +196 -0
  29. data/app/assets/javascripts/better_rails_debugger/views/main.js +533 -0
  30. data/app/assets/javascripts/better_rails_debugger/views/popovers.js +8 -0
  31. data/app/assets/javascripts/better_rails_debugger/views/tooltips.js +5 -0
  32. data/app/assets/javascripts/better_rails_debugger/views/widgets.js +564 -0
  33. data/app/assets/stylesheets/better_rails_debugger/analysis_group_controller.css +4 -0
  34. data/app/assets/stylesheets/better_rails_debugger/application.scss +16 -0
  35. data/app/assets/stylesheets/better_rails_debugger/group_instances_controller.css +4 -0
  36. data/app/assets/stylesheets/better_rails_debugger/memory.css +4 -0
  37. data/app/assets/stylesheets/better_rails_debugger/prism.css +215 -0
  38. data/app/assets/stylesheets/better_rails_debugger/style.min.css +12 -0
  39. data/app/controllers/better_rails_debugger/analysis_groups_controller.rb +75 -0
  40. data/app/controllers/better_rails_debugger/application_controller.rb +5 -0
  41. data/app/controllers/better_rails_debugger/group_instances_controller.rb +29 -0
  42. data/app/controllers/better_rails_debugger/memory_controller.rb +21 -0
  43. data/app/helpers/better_rails_debugger/analysis_groups_helper.rb +4 -0
  44. data/app/helpers/better_rails_debugger/application_helper.rb +4 -0
  45. data/app/helpers/better_rails_debugger/group_instances_helper.rb +4 -0
  46. data/app/helpers/better_rails_debugger/memory_helper.rb +4 -0
  47. data/app/jobs/better_rails_debugger/analysis_recorder_job.rb +35 -0
  48. data/app/jobs/better_rails_debugger/application_job.rb +4 -0
  49. data/app/mailers/better_rails_debugger/application_mailer.rb +6 -0
  50. data/app/models/better_rails_debugger/analysis_group.rb +49 -0
  51. data/app/models/better_rails_debugger/application_record.rb +5 -0
  52. data/app/models/better_rails_debugger/group_instance.rb +42 -0
  53. data/app/models/better_rails_debugger/object_information.rb +19 -0
  54. data/app/views/better_rails_debugger/analysis_groups/_form.html.haml +41 -0
  55. data/app/views/better_rails_debugger/analysis_groups/edit.html.haml +23 -0
  56. data/app/views/better_rails_debugger/analysis_groups/index.html.haml +36 -0
  57. data/app/views/better_rails_debugger/analysis_groups/new.html.haml +23 -0
  58. data/app/views/better_rails_debugger/analysis_groups/show.html.haml +35 -0
  59. data/app/views/better_rails_debugger/group_instances/objects.html.haml +62 -0
  60. data/app/views/better_rails_debugger/memory/index.html.haml +20 -0
  61. data/app/views/better_rails_debugger/memory/show.html.haml +26 -0
  62. data/app/views/better_rails_debugger/shared/_header.html.haml +4 -0
  63. data/app/views/better_rails_debugger/shared/_sidebar.html.haml +5 -0
  64. data/app/views/layouts/better_rails_debugger/application.html.erb +47 -0
  65. data/config/initializers/setup.rb +10 -0
  66. data/config/mongoid.yml +160 -0
  67. data/config/routes.rb +21 -0
  68. data/lib/better_rails_debugger/config.rb +45 -0
  69. data/lib/better_rails_debugger/engine.rb +5 -0
  70. data/lib/better_rails_debugger/memory_analyzer.rb +109 -0
  71. data/lib/better_rails_debugger/version.rb +3 -0
  72. data/lib/better_rails_debugger.rb +16 -0
  73. data/lib/tasks/better_rails_debugger_tasks.rake +4 -0
  74. metadata +247 -0
@@ -0,0 +1,8 @@
1
+ $(function () {
2
+ $('[data-toggle="popover"]').popover();
3
+ $('.popover-dismiss').popover({
4
+ trigger: 'focus'
5
+ });
6
+ });
7
+
8
+
@@ -0,0 +1,5 @@
1
+ //Tooltips are opt-in for performance reasons, so you must initialize them yourself.
2
+
3
+ $(function () {
4
+ $('[data-toggle="tooltip"]').tooltip()
5
+ })
@@ -0,0 +1,564 @@
1
+ $(function(){
2
+ 'use strict';
3
+
4
+ //convert Hex to RGBA
5
+ function convertHex(hex,opacity){
6
+ hex = hex.replace('#','');
7
+ var r = parseInt(hex.substring(0,2), 16);
8
+ var g = parseInt(hex.substring(2,4), 16);
9
+ var b = parseInt(hex.substring(4,6), 16);
10
+
11
+ var result = 'rgba('+r+','+g+','+b+','+opacity/100+')';
12
+ return result;
13
+ }
14
+
15
+ //Cards with Charts
16
+ var labels = ['January','February','March','April','May','June','July'];
17
+ var data = {
18
+ labels: labels,
19
+ datasets: [
20
+ {
21
+ label: 'My First dataset',
22
+ backgroundColor: $.brandPrimary,
23
+ borderColor: 'rgba(255,255,255,.55)',
24
+ data: [65, 59, 84, 84, 51, 55, 40]
25
+ },
26
+ ]
27
+ };
28
+ var options = {
29
+ maintainAspectRatio: false,
30
+ legend: {
31
+ display: false
32
+ },
33
+ scales: {
34
+ xAxes: [{
35
+ gridLines: {
36
+ color: 'transparent',
37
+ zeroLineColor: 'transparent'
38
+ },
39
+ ticks: {
40
+ fontSize: 2,
41
+ fontColor: 'transparent',
42
+ }
43
+
44
+ }],
45
+ yAxes: [{
46
+ display: false,
47
+ ticks: {
48
+ display: false,
49
+ min: Math.min.apply(Math, data.datasets[0].data) - 5,
50
+ max: Math.max.apply(Math, data.datasets[0].data) + 5,
51
+ }
52
+ }],
53
+ },
54
+ elements: {
55
+ line: {
56
+ borderWidth: 1
57
+ },
58
+ point: {
59
+ radius: 4,
60
+ hitRadius: 10,
61
+ hoverRadius: 4,
62
+ },
63
+ }
64
+ };
65
+ var ctx = $('#card-chart1');
66
+ var cardChart1 = new Chart(ctx, {
67
+ type: 'line',
68
+ data: data,
69
+ options: options
70
+ });
71
+
72
+ var data = {
73
+ labels: labels,
74
+ datasets: [
75
+ {
76
+ label: 'My First dataset',
77
+ backgroundColor: $.brandInfo,
78
+ borderColor: 'rgba(255,255,255,.55)',
79
+ data: [1, 18, 9, 17, 34, 22, 11]
80
+ },
81
+ ]
82
+ };
83
+
84
+ var options = {
85
+ maintainAspectRatio: false,
86
+ legend: {
87
+ display: false
88
+ },
89
+ scales: {
90
+ xAxes: [{
91
+ gridLines: {
92
+ color: 'transparent',
93
+ zeroLineColor: 'transparent'
94
+ },
95
+ ticks: {
96
+ fontSize: 2,
97
+ fontColor: 'transparent',
98
+ }
99
+
100
+ }],
101
+ yAxes: [{
102
+ display: false,
103
+ ticks: {
104
+ display: false,
105
+ min: Math.min.apply(Math, data.datasets[0].data) - 5,
106
+ max: Math.max.apply(Math, data.datasets[0].data) + 5,
107
+ }
108
+ }],
109
+ },
110
+ elements: {
111
+ line: {
112
+ tension: 0.00001,
113
+ borderWidth: 1
114
+ },
115
+ point: {
116
+ radius: 4,
117
+ hitRadius: 10,
118
+ hoverRadius: 4,
119
+ },
120
+ }
121
+ };
122
+ var ctx = $('#card-chart2');
123
+ var cardChart2 = new Chart(ctx, {
124
+ type: 'line',
125
+ data: data,
126
+ options: options
127
+ });
128
+
129
+ var options = {
130
+ maintainAspectRatio: false,
131
+ legend: {
132
+ display: false
133
+ },
134
+ scales: {
135
+ xAxes: [{
136
+ display: false
137
+ }],
138
+ yAxes: [{
139
+ display: false
140
+ }],
141
+ },
142
+ elements: {
143
+ line: {
144
+ borderWidth: 2
145
+ },
146
+ point: {
147
+ radius: 0,
148
+ hitRadius: 10,
149
+ hoverRadius: 4,
150
+ },
151
+ }
152
+ };
153
+ var data = {
154
+ maintainAspectRatio: false,
155
+ labels: labels,
156
+ datasets: [
157
+ {
158
+ label: 'My First dataset',
159
+ backgroundColor: 'rgba(255,255,255,.2)',
160
+ borderColor: 'rgba(255,255,255,.55)',
161
+ data: [78, 81, 80, 45, 34, 12, 40]
162
+ },
163
+ ]
164
+ };
165
+ var ctx = $('#card-chart3');
166
+ var cardChart3 = new Chart(ctx, {
167
+ type: 'line',
168
+ data: data,
169
+ options: options
170
+ });
171
+
172
+ //Random Numbers
173
+ function random(min,max) {
174
+ return Math.floor(Math.random()*(max-min+1)+min);
175
+ }
176
+
177
+ var elements = 16;
178
+ var labels = [];
179
+ var data = [];
180
+
181
+ for (var i = 2000; i <= 2000 + elements; i++) {
182
+ labels.push(i);
183
+ data.push(random(40,100));
184
+ }
185
+
186
+
187
+ var options = {
188
+ maintainAspectRatio: false,
189
+ legend: {
190
+ display: false
191
+ },
192
+ scales: {
193
+ xAxes: [{
194
+ display: false,
195
+ barPercentage: 0.7,
196
+ }],
197
+ yAxes: [{
198
+ display: false,
199
+ }]
200
+ },
201
+
202
+ };
203
+ var data = {
204
+ labels: labels,
205
+ datasets: [
206
+ {
207
+ backgroundColor: 'rgba(255,255,255,.3)',
208
+ borderColor: 'transparent',
209
+ data: data
210
+ },
211
+ ]
212
+ };
213
+ var ctx = $('#card-chart4');
214
+ var cardChart4 = new Chart(ctx, {
215
+ type: 'bar',
216
+ data: data,
217
+ options: options
218
+ });
219
+
220
+
221
+ var elements = 15;
222
+ var labels = [];
223
+ var data = [];
224
+
225
+ for (var i = 0; i <= elements; i++) {
226
+ labels.push(i);
227
+ data.push(random(40,100));
228
+ }
229
+
230
+ var options = {
231
+ responsive: false,
232
+ maintainAspectRatio: false,
233
+ legend: {
234
+ display: false
235
+ },
236
+ scales: {
237
+ xAxes: [{
238
+ display: false
239
+ }],
240
+ yAxes: [{
241
+ display: false
242
+ }]
243
+ }
244
+ };
245
+ var data = {
246
+ labels: labels,
247
+ datasets: [
248
+ {
249
+ backgroundColor: $.brandPrimary,
250
+ borderColor: 'transparent',
251
+ borderWidth: 1,
252
+ data: data
253
+ },
254
+ ]
255
+ };
256
+ var ctx = $('#chart-1');
257
+ var Chart1 = new Chart(ctx, {
258
+ type: 'bar',
259
+ data: data,
260
+ options: options
261
+ });
262
+
263
+
264
+ var elements = 15;
265
+ var labels = [];
266
+ var data = [];
267
+
268
+ for (var i = 0; i <= elements; i++) {
269
+ labels.push(i);
270
+ data.push(random(40,100));
271
+ }
272
+
273
+ var options = {
274
+ responsive: false,
275
+ maintainAspectRatio: false,
276
+ legend: {
277
+ display: false
278
+ },
279
+ scales: {
280
+ xAxes: [{
281
+ display: false
282
+ }],
283
+ yAxes: [{
284
+ display: false
285
+ }]
286
+ }
287
+ };
288
+ var data = {
289
+ labels: labels,
290
+ datasets: [
291
+ {
292
+ backgroundColor: $.brandWarning,
293
+ borderColor: 'transparent',
294
+ borderWidth: 1,
295
+ data: data
296
+ },
297
+ ]
298
+ };
299
+ var ctx = $('#chart-2');
300
+ var Chart2 = new Chart(ctx, {
301
+ type: 'bar',
302
+ data: data,
303
+ options: options
304
+ });
305
+
306
+
307
+ var elements = 15;
308
+ var labels = [];
309
+ var data = [];
310
+
311
+ for (var i = 0; i <= elements; i++) {
312
+ labels.push(i);
313
+ data.push(random(40,100));
314
+ }
315
+
316
+ var options = {
317
+ responsive: false,
318
+ maintainAspectRatio: false,
319
+ legend: {
320
+ display: false
321
+ },
322
+ scales: {
323
+ xAxes: [{
324
+ display: false
325
+ }],
326
+ yAxes: [{
327
+ display: false
328
+ }]
329
+ }
330
+ };
331
+ var data = {
332
+ labels: labels,
333
+ datasets: [
334
+ {
335
+ backgroundColor: $.brandSuccess,
336
+ borderColor: 'transparent',
337
+ borderWidth: 1,
338
+ data: data
339
+ },
340
+ ]
341
+ };
342
+ var ctx = $('#chart-3');
343
+ var Chart3 = new Chart(ctx, {
344
+ type: 'bar',
345
+ data: data,
346
+ options: options
347
+ });
348
+
349
+ var options = {
350
+ responsive: false,
351
+ maintainAspectRatio: false,
352
+ legend: {
353
+ display: false
354
+ },
355
+ scales: {
356
+ xAxes: [{
357
+ display: false
358
+ }],
359
+ yAxes: [{
360
+ display: false
361
+ }]
362
+ },
363
+ elements: { point: { radius: 0 } }
364
+ };
365
+ var data = {
366
+ labels: ['January','February','March','April','May','June','July'],
367
+ datasets: [
368
+ {
369
+ backgroundColor: 'transparent',
370
+ borderColor: $.brandInfo,
371
+ borderWidth: 2,
372
+ data: [65, 59, 84, 84, 51, 55, 40]
373
+ },
374
+ ]
375
+ };
376
+ var ctx = $('#chart-4');
377
+ var Chart4 = new Chart(ctx, {
378
+ type: 'line',
379
+ data: data,
380
+ options: options
381
+ });
382
+
383
+
384
+ var options = {
385
+ responsive: false,
386
+ maintainAspectRatio: false,
387
+ legend: {
388
+ display: false
389
+ },
390
+ scales: {
391
+ xAxes: [{
392
+ display: false
393
+ }],
394
+ yAxes: [{
395
+ display: false
396
+ }]
397
+ },
398
+ elements: { point: { radius: 0 } }
399
+ };
400
+ var data = {
401
+ labels: ['January','February','March','April','May','June','July'],
402
+ datasets: [
403
+ {
404
+ backgroundColor: 'transparent',
405
+ borderColor: $.brandSuccess,
406
+ borderWidth: 2,
407
+ data: [65, 59, 84, 84, 51, 55, 40]
408
+ },
409
+ ]
410
+ };
411
+ var ctx = $('#chart-5');
412
+ var Chart5 = new Chart(ctx, {
413
+ type: 'line',
414
+ data: data,
415
+ options: options
416
+ });
417
+
418
+
419
+ var options = {
420
+ responsive: false,
421
+ maintainAspectRatio: false,
422
+ legend: {
423
+ display: false
424
+ },
425
+ scales: {
426
+ xAxes: [{
427
+ display: false
428
+ }],
429
+ yAxes: [{
430
+ display: false
431
+ }]
432
+ },
433
+ elements: { point: { radius: 0 } }
434
+ };
435
+ var data = {
436
+ labels: ['January','February','March','April','May','June','July'],
437
+ datasets: [
438
+ {
439
+ backgroundColor: 'transparent',
440
+ borderColor: $.brandDanger,
441
+ borderWidth: 2,
442
+ data: [65, 59, 84, 84, 51, 55, 40]
443
+ },
444
+ ]
445
+ };
446
+ var ctx = $('#chart-6');
447
+ var Chart6 = new Chart(ctx, {
448
+ type: 'line',
449
+ data: data,
450
+ options: options
451
+ });
452
+
453
+
454
+ var options = {
455
+ maintainAspectRatio: false,
456
+ legend: {
457
+ display: false
458
+ },
459
+ scales: {
460
+ xAxes: [{
461
+ display:false,
462
+ points:false,
463
+ }],
464
+ yAxes: [{
465
+ display:false,
466
+ }]
467
+ },
468
+ elements: { point: { radius: 0 } }
469
+ };
470
+ var data = {
471
+ labels: ['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'],
472
+ datasets: [
473
+ {
474
+ backgroundColor: 'transparent',
475
+ borderColor: 'rgba(255,255,255,.55)',
476
+ borderWidth: 2,
477
+ data: [4, 18, 9, 17, 34, 22, 11, 3, 15, 12, 18, 9]
478
+ },
479
+ ]
480
+ };
481
+ var ctx = $('.chart-7');
482
+ var Chart7 = new Chart(ctx, {
483
+ type: 'line',
484
+ data: data,
485
+ options: options
486
+ });
487
+
488
+ var ctx = $('.chart-7-2');
489
+ var Chart72 = new Chart(ctx, {
490
+ type: 'line',
491
+ data: data,
492
+ options: options
493
+ });
494
+
495
+ var ctx = $('.chart-7-3');
496
+ var Chart73 = new Chart(ctx, {
497
+ type: 'line',
498
+ data: data,
499
+ options: options
500
+ });
501
+
502
+ var ctx = $('.chart-7-4');
503
+ var Chart74 = new Chart(ctx, {
504
+ type: 'line',
505
+ data: data,
506
+ options: options
507
+ });
508
+
509
+
510
+ var options = {
511
+ maintainAspectRatio: false,
512
+ legend: {
513
+ display: false
514
+ },
515
+ scales: {
516
+ xAxes: [{
517
+ display:false,
518
+ barPercentage: 0.6,
519
+ }],
520
+ yAxes: [{
521
+ display:false,
522
+ ticks: {
523
+ beginAtZero: true,
524
+ }
525
+ }]
526
+ },
527
+ };
528
+ var data = {
529
+ labels: ['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'],
530
+ datasets: [
531
+ {
532
+ backgroundColor: 'rgba(0,0,0,.2)',
533
+ data: [4, 18, 9, 17, 34, 22, 11, 3, 15, 12, 18, 9]
534
+ },
535
+ ]
536
+ };
537
+ var ctx = $('.chart-8');
538
+ var Chart8 = new Chart(ctx, {
539
+ type: 'bar',
540
+ data: data,
541
+ options: options
542
+ });
543
+
544
+ var ctx = $('.chart-8-2');
545
+ var Chart82 = new Chart(ctx, {
546
+ type: 'bar',
547
+ data: data,
548
+ options: options
549
+ });
550
+
551
+ var ctx = $('.chart-8-3');
552
+ var Chart83 = new Chart(ctx, {
553
+ type: 'bar',
554
+ data: data,
555
+ options: options
556
+ });
557
+
558
+ var ctx = $('.chart-8-4');
559
+ var Chart84 = new Chart(ctx, {
560
+ type: 'bar',
561
+ data: data,
562
+ options: options
563
+ });
564
+ })