better_rails_debugger 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
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
+ })