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,533 @@
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
+ var options = {
84
+ maintainAspectRatio: false,
85
+ legend: {
86
+ display: false
87
+ },
88
+ scales: {
89
+ xAxes: [{
90
+ gridLines: {
91
+ color: 'transparent',
92
+ zeroLineColor: 'transparent'
93
+ },
94
+ ticks: {
95
+ fontSize: 2,
96
+ fontColor: 'transparent',
97
+ }
98
+
99
+ }],
100
+ yAxes: [{
101
+ display: false,
102
+ ticks: {
103
+ display: false,
104
+ min: Math.min.apply(Math, data.datasets[0].data) - 5,
105
+ max: Math.max.apply(Math, data.datasets[0].data) + 5,
106
+ }
107
+ }],
108
+ },
109
+ elements: {
110
+ line: {
111
+ tension: 0.00001,
112
+ borderWidth: 1
113
+ },
114
+ point: {
115
+ radius: 4,
116
+ hitRadius: 10,
117
+ hoverRadius: 4,
118
+ },
119
+ }
120
+ };
121
+ var ctx = $('#card-chart2');
122
+ var cardChart2 = new Chart(ctx, {
123
+ type: 'line',
124
+ data: data,
125
+ options: options
126
+ });
127
+
128
+ var options = {
129
+ maintainAspectRatio: false,
130
+ legend: {
131
+ display: false
132
+ },
133
+ scales: {
134
+ xAxes: [{
135
+ display: false
136
+ }],
137
+ yAxes: [{
138
+ display: false
139
+ }],
140
+ },
141
+ elements: {
142
+ line: {
143
+ borderWidth: 2
144
+ },
145
+ point: {
146
+ radius: 0,
147
+ hitRadius: 10,
148
+ hoverRadius: 4,
149
+ },
150
+ }
151
+ };
152
+ var data = {
153
+ labels: labels,
154
+ datasets: [
155
+ {
156
+ label: 'My First dataset',
157
+ backgroundColor: 'rgba(255,255,255,.2)',
158
+ borderColor: 'rgba(255,255,255,.55)',
159
+ data: [78, 81, 80, 45, 34, 12, 40]
160
+ },
161
+ ]
162
+ };
163
+ var ctx = $('#card-chart3');
164
+ var cardChart3 = new Chart(ctx, {
165
+ type: 'line',
166
+ data: data,
167
+ options: options
168
+ });
169
+
170
+ //Random Numbers
171
+ function random(min,max) {
172
+ return Math.floor(Math.random()*(max-min+1)+min);
173
+ }
174
+
175
+ var elements = 16;
176
+ var labels = [];
177
+ var data = [];
178
+
179
+ for (var i = 2000; i <= 2000 + elements; i++) {
180
+ labels.push(i);
181
+ data.push(random(40,100));
182
+ }
183
+
184
+ var options = {
185
+ maintainAspectRatio: false,
186
+ legend: {
187
+ display: false
188
+ },
189
+ scales: {
190
+ xAxes: [{
191
+ display: false,
192
+ barPercentage: 0.6,
193
+ }],
194
+ yAxes: [{
195
+ display: false,
196
+ }]
197
+ },
198
+
199
+ };
200
+ var data = {
201
+ labels: labels,
202
+ datasets: [
203
+ {
204
+ backgroundColor: 'rgba(255,255,255,.3)',
205
+ borderColor: 'transparent',
206
+ data: data
207
+ },
208
+ ]
209
+ };
210
+ var ctx = $('#card-chart4');
211
+ var cardChart4 = new Chart(ctx, {
212
+ type: 'bar',
213
+ data: data,
214
+ options: options
215
+ });
216
+
217
+ //Main Chart
218
+ var elements = 27;
219
+ var data1 = [];
220
+ var data2 = [];
221
+ var data3 = [];
222
+
223
+ for (var i = 0; i <= elements; i++) {
224
+ data1.push(random(50,200));
225
+ data2.push(random(80,100));
226
+ data3.push(65);
227
+ }
228
+
229
+ var data = {
230
+ labels: ['M', 'T', 'W', 'T', 'F', 'S', 'S', 'M', 'T', 'W', 'T', 'F', 'S', 'S', 'M', 'T', 'W', 'T', 'F', 'S', 'S', 'M', 'T', 'W', 'T', 'F', 'S', 'S'],
231
+ datasets: [
232
+ {
233
+ label: 'My First dataset',
234
+ backgroundColor: convertHex($.brandInfo,10),
235
+ borderColor: $.brandInfo,
236
+ pointHoverBackgroundColor: '#fff',
237
+ borderWidth: 2,
238
+ data: data1
239
+ },
240
+ {
241
+ label: 'My Second dataset',
242
+ backgroundColor: 'transparent',
243
+ borderColor: $.brandSuccess,
244
+ pointHoverBackgroundColor: '#fff',
245
+ borderWidth: 2,
246
+ data: data2
247
+ },
248
+ {
249
+ label: 'My Third dataset',
250
+ backgroundColor: 'transparent',
251
+ borderColor: $.brandDanger,
252
+ pointHoverBackgroundColor: '#fff',
253
+ borderWidth: 1,
254
+ borderDash: [8, 5],
255
+ data: data3
256
+ }
257
+ ]
258
+ };
259
+
260
+ var options = {
261
+ maintainAspectRatio: false,
262
+ legend: {
263
+ display: false
264
+ },
265
+ scales: {
266
+ xAxes: [{
267
+ gridLines: {
268
+ drawOnChartArea: false,
269
+ }
270
+ }],
271
+ yAxes: [{
272
+ ticks: {
273
+ beginAtZero: true,
274
+ maxTicksLimit: 5,
275
+ stepSize: Math.ceil(250 / 5),
276
+ max: 250
277
+ }
278
+ }]
279
+ },
280
+ elements: {
281
+ point: {
282
+ radius: 0,
283
+ hitRadius: 10,
284
+ hoverRadius: 4,
285
+ hoverBorderWidth: 3,
286
+ }
287
+ },
288
+ };
289
+ var ctx = $('#main-chart');
290
+ var mainChart = new Chart(ctx, {
291
+ type: 'line',
292
+ data: data,
293
+ options: options
294
+ });
295
+
296
+
297
+ //Social Box Charts
298
+ var labels = ['January','February','March','April','May','June','July'];
299
+
300
+ var options = {
301
+ responsive: true,
302
+ maintainAspectRatio: false,
303
+ legend: {
304
+ display: false,
305
+ },
306
+ scales: {
307
+ xAxes: [{
308
+ display:false,
309
+ }],
310
+ yAxes: [{
311
+ display:false,
312
+ }]
313
+ },
314
+ elements: {
315
+ point: {
316
+ radius: 0,
317
+ hitRadius: 10,
318
+ hoverRadius: 4,
319
+ hoverBorderWidth: 3,
320
+ }
321
+ }
322
+ };
323
+
324
+ var data1 = {
325
+ labels: labels,
326
+ datasets: [{
327
+ backgroundColor: 'rgba(255,255,255,.1)',
328
+ borderColor: 'rgba(255,255,255,.55)',
329
+ pointHoverBackgroundColor: '#fff',
330
+ borderWidth: 2,
331
+ data: [65, 59, 84, 84, 51, 55, 40]
332
+ }]
333
+ };
334
+ var ctx = $('#social-box-chart-1');
335
+ var socialBoxChart1 = new Chart(ctx, {
336
+ type: 'line',
337
+ data: data1,
338
+ options: options
339
+ });
340
+
341
+ var data2 = {
342
+ labels: labels,
343
+ datasets: [
344
+ {
345
+ backgroundColor: 'rgba(255,255,255,.1)',
346
+ borderColor: 'rgba(255,255,255,.55)',
347
+ pointHoverBackgroundColor: '#fff',
348
+ borderWidth: 2,
349
+ data: [1, 13, 9, 17, 34, 41, 38]
350
+ }
351
+ ]
352
+ };
353
+ var ctx = $('#social-box-chart-2').get(0).getContext('2d');
354
+ var socialBoxChart2 = new Chart(ctx, {
355
+ type: 'line',
356
+ data: data2,
357
+ options: options
358
+ });
359
+
360
+ var data3 = {
361
+ labels: labels,
362
+ datasets: [
363
+ {
364
+ backgroundColor: 'rgba(255,255,255,.1)',
365
+ borderColor: 'rgba(255,255,255,.55)',
366
+ pointHoverBackgroundColor: '#fff',
367
+ borderWidth: 2,
368
+ data: [78, 81, 80, 45, 34, 12, 40]
369
+ }
370
+ ]
371
+ };
372
+ var ctx = $('#social-box-chart-3').get(0).getContext('2d');
373
+ var socialBoxChart3 = new Chart(ctx, {
374
+ type: 'line',
375
+ data: data3,
376
+ options: options
377
+ });
378
+
379
+ var data4 = {
380
+ labels: labels,
381
+ datasets: [
382
+ {
383
+ backgroundColor: 'rgba(255,255,255,.1)',
384
+ borderColor: 'rgba(255,255,255,.55)',
385
+ pointHoverBackgroundColor: '#fff',
386
+ borderWidth: 2,
387
+ data: [35, 23, 56, 22, 97, 23, 64]
388
+ }
389
+ ]
390
+ };
391
+ var ctx = $('#social-box-chart-4').get(0).getContext('2d');
392
+ var socialBoxChart4 = new Chart(ctx, {
393
+ type: 'line',
394
+ data: data4,
395
+ options: options
396
+ });
397
+
398
+
399
+
400
+ //Sparkline Charts
401
+ var labels = ['Monday','Tuesday','Wednesday','Thursday','Friday','Saturday','Sunday'];
402
+
403
+ var options = {
404
+ legend: {
405
+ display: false,
406
+ },
407
+ scales: {
408
+ xAxes: [{
409
+ display:false,
410
+ }],
411
+ yAxes: [{
412
+ display:false,
413
+ }]
414
+ },
415
+ elements: {
416
+ point: {
417
+ radius: 0,
418
+ hitRadius: 10,
419
+ hoverRadius: 4,
420
+ hoverBorderWidth: 3,
421
+ }
422
+ },
423
+ };
424
+
425
+ var data1 = {
426
+ labels: labels,
427
+ datasets: [
428
+ {
429
+ backgroundColor: 'transparent',
430
+ borderColor: $.brandPrimary,
431
+ borderWidth: 2,
432
+ data: [35, 23, 56, 22, 97, 23, 64]
433
+ }
434
+ ]
435
+ };
436
+ var ctx = $('#sparkline-chart-1');
437
+ var sparklineChart1 = new Chart(ctx, {
438
+ type: 'line',
439
+ data: data1,
440
+ options: options
441
+ });
442
+
443
+ var data2 = {
444
+ labels: labels,
445
+ datasets: [
446
+ {
447
+ backgroundColor: 'transparent',
448
+ borderColor: $.brandDanger,
449
+ borderWidth: 2,
450
+ data: [78, 81, 80, 45, 34, 12, 40]
451
+ }
452
+ ]
453
+ };
454
+ var ctx = $('#sparkline-chart-2');
455
+ var sparklineChart2 = new Chart(ctx, {
456
+ type: 'line',
457
+ data: data2,
458
+ options: options
459
+ });
460
+
461
+ var data3 = {
462
+ labels: labels,
463
+ datasets: [
464
+ {
465
+ backgroundColor: 'transparent',
466
+ borderColor: $.brandWarning,
467
+ borderWidth: 2,
468
+ data: [35, 23, 56, 22, 97, 23, 64]
469
+ }
470
+ ]
471
+ };
472
+ var ctx = $('#sparkline-chart-3');
473
+ var sparklineChart3 = new Chart(ctx, {
474
+ type: 'line',
475
+ data: data3,
476
+ options: options
477
+ });
478
+
479
+ var data4 = {
480
+ labels: labels,
481
+ datasets: [
482
+ {
483
+ backgroundColor: 'transparent',
484
+ borderColor: $.brandSuccess,
485
+ borderWidth: 2,
486
+ data: [78, 81, 80, 45, 34, 12, 40]
487
+ }
488
+ ]
489
+ };
490
+ var ctx = $('#sparkline-chart-4');
491
+ var sparklineChart4 = new Chart(ctx, {
492
+ type: 'line',
493
+ data: data4,
494
+ options: options
495
+ });
496
+
497
+ var data5 = {
498
+ labels: labels,
499
+ datasets: [
500
+ {
501
+ backgroundColor: 'transparent',
502
+ borderColor: '#d1d4d7',
503
+ borderWidth: 2,
504
+ data: [35, 23, 56, 22, 97, 23, 64]
505
+ }
506
+ ]
507
+ };
508
+ var ctx = $('#sparkline-chart-5');
509
+ var sparklineChart5 = new Chart(ctx, {
510
+ type: 'line',
511
+ data: data5,
512
+ options: options
513
+ });
514
+
515
+ var data6 = {
516
+ labels: labels,
517
+ datasets: [
518
+ {
519
+ backgroundColor: 'transparent',
520
+ borderColor: $.brandInfo,
521
+ borderWidth: 2,
522
+ data: [78, 81, 80, 45, 34, 12, 40]
523
+ }
524
+ ]
525
+ };
526
+ var ctx = $('#sparkline-chart-6');
527
+ var sparklineChart6= new Chart(ctx, {
528
+ type: 'line',
529
+ data: data6,
530
+ options: options
531
+ });
532
+
533
+ });