rails_mini_profiler 0.4.0 → 0.7.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 (101) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +48 -34
  3. data/app/adapters/rails_mini_profiler/database_adapter.rb +16 -0
  4. data/app/controllers/rails_mini_profiler/application_controller.rb +9 -15
  5. data/app/controllers/rails_mini_profiler/profiled_requests_controller.rb +44 -14
  6. data/app/helpers/rails_mini_profiler/application_helper.rb +1 -1
  7. data/app/helpers/rails_mini_profiler/profiled_requests_helper.rb +10 -0
  8. data/app/javascript/images/check.svg +3 -0
  9. data/app/javascript/images/chevron.svg +3 -0
  10. data/app/javascript/images/copy.svg +6 -0
  11. data/app/javascript/images/filter.svg +1 -0
  12. data/app/javascript/images/logo_variant.svg +2 -2
  13. data/app/javascript/images/search.svg +4 -5
  14. data/app/javascript/js/checklist_controller.js +48 -0
  15. data/app/javascript/js/clipboard_controller.js +53 -0
  16. data/app/javascript/js/enable_controller.js +23 -0
  17. data/app/javascript/js/filter_controller.js +48 -0
  18. data/app/javascript/js/search_controller.js +18 -0
  19. data/app/javascript/js/select_controller.js +52 -0
  20. data/app/javascript/packs/rails-mini-profiler.js +69 -53
  21. data/app/javascript/stylesheets/components/buttons.scss +59 -0
  22. data/app/javascript/stylesheets/components/dropdown.scss +103 -0
  23. data/app/javascript/stylesheets/components/input.scss +10 -0
  24. data/app/javascript/stylesheets/{navbar.scss → components/navbar.scss} +7 -13
  25. data/app/javascript/stylesheets/components/page_header.scss +7 -0
  26. data/app/javascript/stylesheets/components/pagination.scss +14 -13
  27. data/app/javascript/stylesheets/components/placeholder.scss +36 -0
  28. data/app/javascript/stylesheets/components/profiled_request_table.scss +55 -0
  29. data/app/javascript/stylesheets/components/trace.scss +93 -0
  30. data/app/javascript/stylesheets/flamegraph.scss +3 -2
  31. data/app/javascript/stylesheets/flashes.scss +3 -5
  32. data/app/javascript/stylesheets/profiled_requests.scss +12 -161
  33. data/app/javascript/stylesheets/rails-mini-profiler.scss +81 -66
  34. data/app/javascript/stylesheets/traces.scss +52 -56
  35. data/app/models/rails_mini_profiler/profiled_request.rb +1 -1
  36. data/app/models/rails_mini_profiler/trace.rb +0 -15
  37. data/app/presenters/rails_mini_profiler/controller_trace_presenter.rb +10 -2
  38. data/app/presenters/rails_mini_profiler/instantiation_trace_presenter.rb +15 -3
  39. data/app/presenters/rails_mini_profiler/profiled_request_presenter.rb +10 -17
  40. data/app/presenters/rails_mini_profiler/render_partial_trace_presenter.rb +6 -2
  41. data/app/presenters/rails_mini_profiler/render_template_trace_presenter.rb +6 -2
  42. data/app/presenters/rails_mini_profiler/sequel_trace_presenter.rb +16 -4
  43. data/app/presenters/rails_mini_profiler/trace_presenter.rb +10 -8
  44. data/app/search/rails_mini_profiler/base_search.rb +67 -0
  45. data/app/search/rails_mini_profiler/profiled_request_search.rb +33 -0
  46. data/app/search/rails_mini_profiler/trace_search.rb +27 -0
  47. data/app/views/rails_mini_profiler/badge.html.erb +2 -2
  48. data/app/views/rails_mini_profiler/profiled_requests/index.html.erb +8 -58
  49. data/app/views/rails_mini_profiler/profiled_requests/shared/header/_header.erb +19 -0
  50. data/app/views/rails_mini_profiler/profiled_requests/shared/table/_placeholder.erb +12 -0
  51. data/app/views/rails_mini_profiler/profiled_requests/shared/table/_table.erb +14 -0
  52. data/app/views/rails_mini_profiler/profiled_requests/shared/table/_table_head.erb +125 -0
  53. data/app/views/rails_mini_profiler/profiled_requests/shared/table/_table_row.erb +21 -0
  54. data/app/views/rails_mini_profiler/profiled_requests/{shared → show}/_trace.html.erb +24 -7
  55. data/app/views/rails_mini_profiler/profiled_requests/show/_trace_list.erb +12 -0
  56. data/app/views/rails_mini_profiler/profiled_requests/show/_trace_list_header.erb +87 -0
  57. data/app/views/rails_mini_profiler/profiled_requests/show/_trace_list_placeholder.erb +12 -0
  58. data/app/views/rails_mini_profiler/profiled_requests/show.html.erb +5 -18
  59. data/app/views/rails_mini_profiler/shared/_head.erb +1 -1
  60. data/lib/generators/rails_mini_profiler/templates/rails_mini_profiler.rb.erb +2 -0
  61. data/lib/rails_mini_profiler/badge.rb +21 -12
  62. data/lib/rails_mini_profiler/configuration/user_interface.rb +31 -1
  63. data/lib/rails_mini_profiler/configuration.rb +7 -0
  64. data/lib/rails_mini_profiler/engine.rb +12 -8
  65. data/lib/rails_mini_profiler/flamegraph_guard.rb +10 -6
  66. data/lib/rails_mini_profiler/guard.rb +19 -1
  67. data/lib/rails_mini_profiler/middleware.rb +12 -10
  68. data/lib/rails_mini_profiler/request_context.rb +22 -18
  69. data/lib/rails_mini_profiler/request_wrapper.rb +12 -55
  70. data/lib/rails_mini_profiler/response_wrapper.rb +21 -17
  71. data/lib/rails_mini_profiler/tracers/controller_tracer.rb +29 -0
  72. data/lib/rails_mini_profiler/tracers/instantiation_tracer.rb +17 -0
  73. data/lib/rails_mini_profiler/tracers/null_trace.rb +7 -0
  74. data/lib/rails_mini_profiler/tracers/registry.rb +76 -0
  75. data/lib/rails_mini_profiler/tracers/rmp_tracer.rb +17 -0
  76. data/lib/rails_mini_profiler/tracers/sequel_tracer.rb +51 -0
  77. data/lib/rails_mini_profiler/tracers/sequel_tracker.rb +40 -0
  78. data/lib/rails_mini_profiler/tracers/subscriptions.rb +28 -0
  79. data/lib/rails_mini_profiler/{models → tracers}/trace.rb +11 -3
  80. data/lib/rails_mini_profiler/tracers/trace_factory.rb +27 -0
  81. data/lib/rails_mini_profiler/tracers/tracer.rb +45 -0
  82. data/lib/rails_mini_profiler/tracers/view_tracer.rb +29 -0
  83. data/lib/rails_mini_profiler/tracers.rb +12 -83
  84. data/lib/rails_mini_profiler/user.rb +1 -1
  85. data/lib/rails_mini_profiler/version.rb +1 -1
  86. data/lib/rails_mini_profiler.rb +4 -8
  87. data/vendor/assets/images/check.svg +3 -0
  88. data/vendor/assets/images/chevron.svg +3 -0
  89. data/vendor/assets/images/copy.svg +6 -0
  90. data/vendor/assets/images/filter.svg +1 -0
  91. data/vendor/assets/images/logo_variant.svg +2 -2
  92. data/vendor/assets/images/search.svg +4 -5
  93. data/vendor/assets/javascripts/rails-mini-profiler.css +1 -1
  94. data/vendor/assets/javascripts/rails-mini-profiler.js +1 -1
  95. metadata +58 -13
  96. data/app/models/rails_mini_profiler/controller_trace.rb +0 -37
  97. data/app/models/rails_mini_profiler/instantiation_trace.rb +0 -37
  98. data/app/models/rails_mini_profiler/render_partial_trace.rb +0 -37
  99. data/app/models/rails_mini_profiler/render_template_trace.rb +0 -37
  100. data/app/models/rails_mini_profiler/rmp_trace.rb +0 -35
  101. data/app/models/rails_mini_profiler/sequel_trace.rb +0 -37
@@ -1,17 +1,15 @@
1
1
  .flash {
2
- margin-top: 1rem;
3
2
  padding: 1rem 1rem;
4
-
3
+ margin-top: 1rem;
5
4
  border-radius: 5px;
6
5
  }
7
6
 
8
7
  .flash-error {
9
- color: white;
10
8
  background: var(--red-500);
9
+ color: white;
11
10
  }
12
11
 
13
12
  .flash-notice {
14
- color: white;
15
13
  background: var(--green-400);
16
-
14
+ color: white;
17
15
  }
@@ -1,174 +1,25 @@
1
- main {
2
- width: 100%;
1
+ @import 'components/profiled_request_table';
3
2
 
4
- display: flex;
5
- justify-content: center;
6
- }
7
-
8
- .main-section {
9
- width: var(--main-width);
3
+ .search-field {
4
+ box-sizing: border-box;
5
+ padding: 0.5rem;
6
+ border: 1px solid var(--grey-400);
7
+ border-radius: 5px;
10
8
  }
11
9
 
12
- .placeholder {
10
+ .profiled-requests-header {
13
11
  display: flex;
14
- flex-direction: column;
15
- justify-content: center;
12
+ flex-direction: row;
16
13
  align-items: center;
17
- width: 100%;
18
- height: 450px;
19
- }
20
-
21
- .placeholder-image {
22
- height: 30%;
23
- width: 30%;
24
- -webkit-filter: grayscale(1) brightness(2.5);
25
- }
26
-
27
- .placeholder-text {
28
- text-align: center;
29
- color: var(--grey-400);
30
- }
31
-
32
- .profiled-requests-actions {
33
- display: flex;
34
- padding: 1rem 0;
35
14
  justify-content: space-between;
36
- align-items: center;
37
- }
38
-
39
- .search-field {
40
- padding: 0.5rem .5rem;
41
- border-radius: .25em;
42
-
43
- border: 1px solid var(--grey-400);
44
- color: var(--grey-700) ;
45
15
  }
46
16
 
47
17
  .clear-action button {
48
18
  background: var(--red-500);
49
19
  color: white;
50
- }
51
-
52
- .table {
53
- width: 100%;
54
- /* Hack to get table row borders, see https://stackoverflow.com/a/2586780/2553104 */
55
- border-collapse: collapse;
56
- border-radius: 5px;
57
- border: hidden 1px var(--border-color);
58
- box-shadow: 0 0 0 1px var(--border-color);
59
- }
60
-
61
- .table thead tr {
62
- color: var(--grey-400);
63
- }
64
-
65
- .table thead th {
66
- font-weight: 400;
67
- }
68
-
69
- .table tr {
70
- border: solid 1px var(--border-color);
71
- color: var(--grey-700);
72
- cursor: pointer;
73
- }
74
-
75
- .table tr:nth-child(even) {
76
- background: var(--grey-50);
77
- }
78
-
79
- .table tbody tr:hover {
80
- background: var(--grey-100);
81
- }
82
-
83
- .table th,
84
- .table td {
85
- padding: 0.5rem 1rem;
86
- }
87
-
88
- .request-path {
89
- max-width: 300px;
90
-
91
- white-space: nowrap;
92
- overflow: hidden;
93
- text-overflow: ellipsis;
94
- }
95
-
96
- .request-buttons {
97
- z-index: 1;
98
- text-align: right;
99
- }
100
-
101
- .request-buttons a {
102
- text-decoration: none;
103
- padding: 0 .25rem;
104
- color: var(--grey-700);
105
- }
106
-
107
- .request-buttons a:active,
108
- .request-buttons a:focus-visible,
109
- .request-buttons a:hover {
110
- color: var(--blue-500);
111
- }
112
-
113
- .request-buttons a.link-disabled {
114
- cursor: default;
115
- pointer-events: none;
116
- text-decoration: none;
117
- color: var(--grey-200);
118
- }
119
-
120
- .request-details-data {
121
- display: flex;
122
-
123
- margin: 0;
124
- padding: 0;
125
- }
126
-
127
- .data-item {
128
- display: flex;
129
- flex-direction: column;
130
- align-items: flex-start;
131
- list-style: none;
132
-
133
- margin-right: 3rem;
134
- padding: 0;
135
- }
136
-
137
- .data-item small {
138
- color: var(--grey-400);
139
- }
140
-
141
- .data-item span {
142
- margin: .25rem 0;
143
- }
144
-
145
- [class*='request-status-2'],
146
- [class*='request-method-get'] {
147
- color: white;
148
- background: var(--green-400) !important;
149
- }
150
-
151
- [class*='request-status-4'],
152
- [class*='request-method-put'],
153
- [class*='request-method-patch'] {
154
- color: white;
155
- background: var(--yellow-400) !important;
156
- }
157
-
158
- [class*='request-status-5'],
159
- [class*='request-method-delete'] {
160
- color: white;
161
- background: var(--red-500) !important;
162
- }
163
-
164
- .request-details-actions {
165
- margin: 0;
166
- padding: 2em 0;
167
- display: flex;
168
- align-items: center;
169
- justify-content: space-between;
170
- }
20
+ font-weight: 600;
171
21
 
172
- .flamegraph-button button {
173
- background: var(--grey-200);
22
+ &:hover {
23
+ background: var(--red-600);
24
+ }
174
25
  }
@@ -1,99 +1,99 @@
1
1
  @import 'flashes';
2
2
  @import 'flamegraph';
3
- @import 'navbar';
4
3
  @import 'profiled_requests';
5
4
  @import 'traces';
5
+ @import 'components/buttons';
6
+ @import 'components/input';
7
+ @import 'components/navbar';
6
8
  @import 'components/pagination';
7
-
9
+ @import 'components/page_header';
10
+ @import 'components/dropdown';
11
+ @import 'components/placeholder';
12
+ @import 'components/trace';
8
13
  @import url('https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;600;700&display=swap');
9
14
 
10
15
  @font-face {
11
16
  font-family: 'Open Sans';
12
- font-weight: 400;
13
17
  font-style: normal;
18
+ font-weight: 400;
14
19
  }
15
20
 
16
21
  @font-face {
17
22
  font-family: 'Open Sans';
18
- font-weight: 600;
19
23
  font-style: normal;
24
+ font-weight: 600;
20
25
  }
21
26
 
22
27
  @font-face {
23
28
  font-family: 'Open Sans';
24
- font-weight: 700;
25
29
  font-style: normal;
30
+ font-weight: 700;
26
31
  }
27
32
 
28
33
  html {
29
34
  width: 100%;
30
35
  height: 100%;
31
- margin: 0;
32
36
  padding: 0;
37
+ margin: 0;
38
+ font-family: 'Open Sans', monospace;
33
39
 
34
- --grey-50: #F9FAFB;
35
- --grey-100: #F3F4F6;
36
- --grey-200: #E5E7EB;
37
- --grey-400: #9CA3AF;
38
- --grey-500: #6B7280;
40
+ --grey-50: #f9fafb;
41
+ --grey-100: #f3f4f6;
42
+ --grey-200: #e5e7eb;
43
+ --grey-400: #9ca3af;
44
+ --grey-500: #6b7280;
39
45
  --grey-700: #374151;
40
46
  --grey-900: #111827;
41
-
42
- --red-400: #F87171;
43
- --red-500: #EF4444;
44
- --red-600: #DC2626;
45
-
46
- --yellow-400: #FBBF24;
47
- --yellow-500: #F59E0B;
48
-
49
- --green-300: #6EE7B7;
50
- --green-400: #34D399;
51
- --green-500: #10B981;
52
-
53
- --blue-400: #60A5FA;
54
- --blue-500: #3B82F6;
55
-
47
+ --red-400: #f87171;
48
+ --red-500: #ef4444;
49
+ --red-600: #dc2626;
50
+ --yellow-400: #fbbf24;
51
+ --yellow-500: #fbbf24;
52
+ --yellow-600: #d97706;
53
+ --yellow-700: #b45309;
54
+ --green-300: #6ee7b7;
55
+ --green-400: #34d399;
56
+ --green-500: #10b981;
57
+ --blue-400: #60a5fa;
58
+ --blue-500: #3b82f6;
56
59
  --main-width: 1056px;
57
-
58
60
  --primary: var(--red-600);
59
-
60
61
  --border-color: var(--grey-200);
61
62
  --text-color: var(--grey-900);
63
+ --fw-normal: 400;
64
+ --fw-semibold: 600;
65
+ --fw-bold: 700;
66
+ }
62
67
 
63
- font-family: 'Open Sans', monospace;
64
-
68
+ * {
69
+ padding: 0;
70
+ margin: 0;
65
71
  }
66
72
 
67
73
  body {
68
74
  width: 100%;
69
75
  height: 100%;
70
- margin: 0;
71
76
  padding: 0;
72
-
73
- color: var(--text-color)
74
- }
75
-
76
- h1 {
77
- padding: 2rem 0 1rem;
77
+ margin: 0;
78
+ color: var(--text-color);
78
79
  }
79
80
 
80
- button {
81
- border: none;
82
- border-radius: .25rem;
83
- padding: 0.5em .5em;
84
- text-align: center;
85
- text-decoration: none;
86
- display: inline-block;
87
- font-size: 1rem;
88
- cursor: pointer;
81
+ main {
82
+ display: flex;
83
+ width: 100%;
84
+ justify-content: center;
89
85
  }
90
86
 
91
- button:hover {
92
- box-shadow: 0 .25rem .25rem 0 var(--grey-50);
87
+ .main-section {
88
+ width: var(--main-width);
93
89
  }
94
90
 
95
91
  /* --------------------------------------- */
96
92
 
93
+ .text-center {
94
+ text-align: center;
95
+ }
96
+
97
97
  .text-left {
98
98
  text-align: left;
99
99
  }
@@ -102,49 +102,61 @@ button:hover {
102
102
  text-align: right;
103
103
  }
104
104
 
105
+ .hidden {
106
+ display: none;
107
+ }
108
+
109
+ .flex-row {
110
+ display: flex;
111
+ flex-direction: row;
112
+ }
113
+
114
+ .flex-column {
115
+ display: flex;
116
+ flex-direction: column;
117
+ }
118
+
105
119
  /* --------------------------------------- */
106
120
 
107
121
  .pill {
108
- margin: .2rem 0;
109
- padding: .1rem .4rem;
122
+ padding: 0.1rem 0.4rem;
123
+ margin: 0.2rem 0;
124
+ background: var(--grey-200);
110
125
  border-radius: 5px;
111
-
112
- font-size: .9rem;
126
+ font-size: 0.9rem;
113
127
  font-weight: 600;
114
- letter-spacing: .1rem;
115
-
116
- background: var(--grey-200);
128
+ letter-spacing: 0.1rem;
117
129
  }
118
130
 
119
131
  /* --------------------------------------- */
120
132
 
121
133
  .popover {
122
134
  display: flex;
123
- flex-direction: column;
124
135
  width: 600px;
136
+ flex-direction: column;
125
137
  padding: 1em;
126
138
  color: black;
127
139
  }
128
140
 
129
141
  .popover-header {
130
142
  display: flex;
131
- padding-bottom: 1em;
132
143
  flex-direction: row;
133
- justify-content: space-between;
134
144
  align-items: center;
145
+ justify-content: space-between;
146
+ padding-bottom: 1em;
135
147
  }
136
148
 
137
149
  .popover-description {
138
- margin: 0;
139
150
  padding: 0;
151
+ margin: 0;
140
152
  }
141
153
 
142
154
  .popover-close {
143
- background: transparent;
144
155
  padding: 0;
145
- font-weight: 700;
146
- font-size: 20px;
156
+ background: transparent;
147
157
  color: var(--grey-400);
158
+ font-size: 20px;
159
+ font-weight: 700;
148
160
  }
149
161
 
150
162
  .popover-body {
@@ -157,20 +169,23 @@ button:hover {
157
169
 
158
170
  .tippy-box[data-theme~='rmp'] {
159
171
  background: white;
160
- box-shadow: 8px 0 30px 4px rgba(0, 0, 0, .2), 8px 4px 10px 0 rgba(0, 0, 0, .05);
161
- border-radius: 3px;
162
-
163
- transition: all cubic-bezier(.19,1,.22,1) .2s;
172
+ border-radius: 5px;
173
+ box-shadow: 8px 0 30px 4px rgba(0, 0, 0, 0.2), 8px 4px 10px 0 rgba(0, 0, 0, 0.05);
174
+ transition: all cubic-bezier(0.19, 1, 0.22, 1) 0.2s;
164
175
  }
176
+
165
177
  .tippy-box[data-theme~='rmp'][data-placement^='top'] > .tippy-arrow::before {
166
178
  border-top-color: white;
167
179
  }
180
+
168
181
  .tippy-box[data-theme~='rmp'][data-placement^='bottom'] > .tippy-arrow::before {
169
182
  border-bottom-color: white;
170
183
  }
184
+
171
185
  .tippy-box[data-theme~='rmp'][data-placement^='left'] > .tippy-arrow::before {
172
186
  border-left-color: white;
173
187
  }
188
+
174
189
  .tippy-box[data-theme~='rmp'][data-placement^='right'] > .tippy-arrow::before {
175
190
  border-right-color: white;
176
191
  }
@@ -1,82 +1,78 @@
1
- .trace-list {
2
- margin: 0;
3
- padding: 0;
4
- }
5
-
6
- .trace {
7
- list-style: none;
1
+ .profiled-request-details {
8
2
  display: flex;
9
- padding: .25em 0;
10
3
  align-items: center;
11
- justify-content: flex-start;
4
+ justify-content: space-between;
5
+ padding-bottom: 2rem;
12
6
  }
13
7
 
14
- .trace:nth-child(odd) {
15
- background: var(--grey-100);
8
+ .request-details-data {
9
+ display: flex;
16
10
  }
17
11
 
18
- .trace .trace-bar {
19
- position: relative;
20
- margin: 0;
21
- height: 16px;
12
+ .data-item {
13
+ display: flex;
14
+ flex-direction: column;
15
+ align-items: flex-start;
22
16
  padding: 0;
23
- cursor: pointer;
24
- background: linear-gradient(to top right, var(--grey-500), var(--grey-400));
17
+ margin-right: 3rem;
18
+ list-style: none;
25
19
  }
26
20
 
27
- .instantiation-trace .trace-bar {
28
- background: linear-gradient(to top right, var(--green-400), var(--green-300));
21
+ .data-item small {
22
+ color: var(--grey-400);
29
23
  }
30
24
 
31
- .sequel-trace .trace-bar {
32
- background: linear-gradient(to top right, var(--green-500), var(--green-400));
25
+ .data-item span {
26
+ margin: 0.25rem 0;
33
27
  }
34
28
 
35
- .controller-trace .trace-bar {
36
- background: linear-gradient(to top right, var(--yellow-500), var(--yellow-400));
29
+ [class*='request-status-2'],
30
+ [class*='request-method-get'] {
31
+ background: var(--green-400) !important;
32
+ color: white;
37
33
  }
38
34
 
39
- .render-template-trace .trace-bar,
40
- .render-partial-trace .trace-bar {
41
- background: linear-gradient(to top right, var(--blue-500), var(--blue-400));
35
+ [class*='request-status-4'],
36
+ [class*='request-method-put'],
37
+ [class*='request-method-patch'] {
38
+ background: var(--yellow-400) !important;
39
+ color: white;
42
40
  }
43
41
 
44
- .trace-name {
45
- margin: 0;
46
- box-sizing: border-box;
47
- padding: 0 .5em;
48
- overflow: hidden;
49
- font-size: 14px;
50
- text-align: right;
51
- text-overflow: ellipsis;
52
- color: var(--grey-400)
42
+ [class*='request-status-5'],
43
+ [class*='request-method-delete'] {
44
+ background: var(--red-500) !important;
45
+ color: white;
53
46
  }
54
47
 
55
- .trace-payload {
56
- margin: 0;
48
+ .trace-list {
49
+ padding: 1rem;
50
+ border: 1px solid var(--grey-200);
51
+ border-radius: 5px;
57
52
  }
58
53
 
59
- .sequel-trace-query {
60
- padding: 1em 1em;
61
- background: var(--grey-100);
62
- overflow: auto;
63
- max-height: 100px;
64
- white-space: pre-wrap;
54
+ .trace-details-table {
55
+ width: 100%;
56
+ border: hidden 1px var(--border-color);
57
+ margin-top: 1em;
58
+ border-collapse: collapse;
65
59
  }
66
60
 
67
- .sequel-trace-binds {
68
- margin: 0 0 1em 0;
69
- padding: .5em 1em;
70
- font-size: 12px;
71
- overflow: auto;
72
- max-height: 100px;
73
- white-space: pre-wrap;
74
- background: var(--grey-50);
61
+ .trace-details-table tr th {
62
+ font-weight: var(--fw-semibold);
75
63
  }
76
64
 
77
- .trace-table {
78
- margin-top: 1em;
79
- width: 100%;
80
- border-collapse: collapse;
81
- border: hidden 1px var(--border-color);
65
+ .trace-list-header {
66
+ display: flex;
67
+ align-items: center;
68
+ justify-content: space-between;
69
+ padding-bottom: 1rem;
70
+ }
71
+
72
+ .trace-list-filters {
73
+ display: flex;
74
+ width: 60%;
75
+ align-items: center;
76
+ justify-content: space-between;
77
+ color: var(--grey-500);
82
78
  }
@@ -43,7 +43,7 @@ module RailsMiniProfiler
43
43
  def request=(request)
44
44
  self.request_body = request.body
45
45
  self.request_headers = request.headers
46
- self.request_method = request.method
46
+ self.request_method = request.request_method
47
47
  self.request_path = request.path
48
48
  self.request_query_string = request.query_string
49
49
  end
@@ -23,24 +23,9 @@
23
23
  module RailsMiniProfiler
24
24
  class Trace < RailsMiniProfiler::ApplicationRecord
25
25
  self.table_name = RailsMiniProfiler.storage_configuration.traces_table
26
- self.inheritance_column = :name
27
26
 
28
27
  belongs_to :profiled_request,
29
28
  class_name: 'RailsMiniProfiler::ProfiledRequest',
30
29
  foreign_key: :rmp_profiled_request_id
31
-
32
- class << self
33
- def find_sti_class(name)
34
- subclasses = {
35
- 'process_action.action_controller' => RailsMiniProfiler::ControllerTrace,
36
- 'sql.active_record' => RailsMiniProfiler::SequelTrace,
37
- 'instantiation.active_record' => RailsMiniProfiler::InstantiationTrace,
38
- 'rails_mini_profiler.total_time' => RailsMiniProfiler::RmpTrace,
39
- 'render_template.action_view' => RailsMiniProfiler::RenderTemplateTrace,
40
- 'render_partial.action_view' => RailsMiniProfiler::RenderPartialTrace
41
- }
42
- subclasses[name] || self
43
- end
44
- end
45
30
  end
46
31
  end
@@ -6,10 +6,18 @@ module RailsMiniProfiler
6
6
  'Action Controller'
7
7
  end
8
8
 
9
- def payload
9
+ def view_runtime
10
+ payload['view_runtime']
11
+ end
12
+
13
+ def db_runtime
14
+ payload['db_runtime']
15
+ end
16
+
17
+ def content
10
18
  content_tag('div') do
11
19
  content_tag('pre', class: 'trace-payload') do
12
- content_tag(:div, "View Time: #{model.view_runtime} ms, DB Time: #{model.db_runtime} ms",
20
+ content_tag(:div, "View Time: #{view_runtime} ms, DB Time: #{db_runtime} ms",
13
21
  class: 'sequel-trace-query')
14
22
  end
15
23
  end
@@ -3,12 +3,24 @@
3
3
  module RailsMiniProfiler
4
4
  class InstantiationTracePresenter < TracePresenter
5
5
  def label
6
- "#{model.class_name} Instantiation"
6
+ "#{class_name} Instantiation"
7
+ end
8
+
9
+ def class_name
10
+ payload['class_name']
11
+ end
12
+
13
+ def record_count
14
+ payload['record_count']
15
+ end
16
+
17
+ def db_runtime
18
+ payload['db_runtime']
7
19
  end
8
20
 
9
21
  def description
10
- record_string = 'Record'.pluralize(model.record_count)
11
- "Instantiated #{model.record_count} #{model.class_name} #{record_string}"
22
+ record_string = 'Record'.pluralize(record_count)
23
+ "Instantiated #{record_count} #{class_name} #{record_string}"
12
24
  end
13
25
  end
14
26
  end