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,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
+ });