rails_mini_profiler 0

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 (146) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE +20 -0
  3. data/README.md +302 -0
  4. data/app/assets/config/rails_mini_profiler_manifest.js +1 -0
  5. data/app/assets/javascripts/rails_mini_profiler.js +15 -0
  6. data/app/assets/stylesheets/rails_mini_profiler/application.css +16 -0
  7. data/app/controllers/rails_mini_profiler/application_controller.rb +33 -0
  8. data/app/controllers/rails_mini_profiler/flamegraphs_controller.rb +23 -0
  9. data/app/controllers/rails_mini_profiler/profiled_requests_controller.rb +68 -0
  10. data/app/helpers/rails_mini_profiler/application_helper.rb +23 -0
  11. data/app/helpers/rails_mini_profiler/profiled_requests_helper.rb +16 -0
  12. data/app/javascript/images/bookmark.svg +10 -0
  13. data/app/javascript/images/chart.svg +12 -0
  14. data/app/javascript/images/check.svg +3 -0
  15. data/app/javascript/images/chevron.svg +3 -0
  16. data/app/javascript/images/delete.svg +9 -0
  17. data/app/javascript/images/filter.svg +1 -0
  18. data/app/javascript/images/graph.svg +11 -0
  19. data/app/javascript/images/logo.svg +18 -0
  20. data/app/javascript/images/logo_variant.svg +32 -0
  21. data/app/javascript/images/search.svg +9 -0
  22. data/app/javascript/images/setting.svg +10 -0
  23. data/app/javascript/images/show.svg +11 -0
  24. data/app/javascript/js/checklist_controller.js +48 -0
  25. data/app/javascript/js/enable_controller.js +24 -0
  26. data/app/javascript/js/filter_controller.js +44 -0
  27. data/app/javascript/js/search_controller.js +18 -0
  28. data/app/javascript/js/select_controller.js +47 -0
  29. data/app/javascript/packs/rails-mini-profiler.js +88 -0
  30. data/app/javascript/stylesheets/components/page_header/page_header.scss +3 -0
  31. data/app/javascript/stylesheets/components/pagination.scss +55 -0
  32. data/app/javascript/stylesheets/components/profiled_request_table/placeholder.scss +33 -0
  33. data/app/javascript/stylesheets/components/profiled_request_table/profiled_request_table.scss +179 -0
  34. data/app/javascript/stylesheets/flamegraph.scss +10 -0
  35. data/app/javascript/stylesheets/flashes.scss +15 -0
  36. data/app/javascript/stylesheets/navbar.scss +44 -0
  37. data/app/javascript/stylesheets/profiled_requests.scss +89 -0
  38. data/app/javascript/stylesheets/rails-mini-profiler.scss +205 -0
  39. data/app/javascript/stylesheets/traces.scss +82 -0
  40. data/app/models/rails_mini_profiler/application_record.rb +17 -0
  41. data/app/models/rails_mini_profiler/controller_trace.rb +37 -0
  42. data/app/models/rails_mini_profiler/flamegraph.rb +37 -0
  43. data/app/models/rails_mini_profiler/instantiation_trace.rb +37 -0
  44. data/app/models/rails_mini_profiler/profiled_request.rb +65 -0
  45. data/app/models/rails_mini_profiler/render_partial_trace.rb +37 -0
  46. data/app/models/rails_mini_profiler/render_template_trace.rb +37 -0
  47. data/app/models/rails_mini_profiler/rmp_trace.rb +35 -0
  48. data/app/models/rails_mini_profiler/sequel_trace.rb +37 -0
  49. data/app/models/rails_mini_profiler/trace.rb +46 -0
  50. data/app/presenters/rails_mini_profiler/base_presenter.rb +25 -0
  51. data/app/presenters/rails_mini_profiler/controller_trace_presenter.rb +18 -0
  52. data/app/presenters/rails_mini_profiler/instantiation_trace_presenter.rb +14 -0
  53. data/app/presenters/rails_mini_profiler/profiled_request_presenter.rb +38 -0
  54. data/app/presenters/rails_mini_profiler/render_partial_trace_presenter.rb +11 -0
  55. data/app/presenters/rails_mini_profiler/render_template_trace_presenter.rb +15 -0
  56. data/app/presenters/rails_mini_profiler/rmp_trace_presenter.rb +9 -0
  57. data/app/presenters/rails_mini_profiler/sequel_trace_presenter.rb +69 -0
  58. data/app/presenters/rails_mini_profiler/trace_presenter.rb +61 -0
  59. data/app/search/rails_mini_profiler/base_search.rb +67 -0
  60. data/app/search/rails_mini_profiler/profiled_request_search.rb +34 -0
  61. data/app/views/layouts/rails_mini_profiler/application.html.erb +15 -0
  62. data/app/views/layouts/rails_mini_profiler/flamegraph.html.erb +11 -0
  63. data/app/views/models/_flamegraph.json.jb +3 -0
  64. data/app/views/models/_profiled_request.jb +3 -0
  65. data/app/views/models/_trace.jb +3 -0
  66. data/app/views/rails_mini_profiler/badge.html.erb +37 -0
  67. data/app/views/rails_mini_profiler/flamegraphs/show.html.erb +13 -0
  68. data/app/views/rails_mini_profiler/flamegraphs/show.json.jb +3 -0
  69. data/app/views/rails_mini_profiler/profiled_requests/index.html.erb +9 -0
  70. data/app/views/rails_mini_profiler/profiled_requests/index.json.jb +3 -0
  71. data/app/views/rails_mini_profiler/profiled_requests/shared/_trace.html.erb +40 -0
  72. data/app/views/rails_mini_profiler/profiled_requests/shared/header/_header.erb +20 -0
  73. data/app/views/rails_mini_profiler/profiled_requests/shared/table/_placeholder.erb +12 -0
  74. data/app/views/rails_mini_profiler/profiled_requests/shared/table/_table.erb +14 -0
  75. data/app/views/rails_mini_profiler/profiled_requests/shared/table/_table_head.erb +125 -0
  76. data/app/views/rails_mini_profiler/profiled_requests/shared/table/_table_row.erb +21 -0
  77. data/app/views/rails_mini_profiler/profiled_requests/show.html.erb +40 -0
  78. data/app/views/rails_mini_profiler/profiled_requests/show.json.jb +5 -0
  79. data/app/views/rails_mini_profiler/shared/_flashes.html.erb +8 -0
  80. data/app/views/rails_mini_profiler/shared/_head.erb +13 -0
  81. data/app/views/rails_mini_profiler/shared/_navbar.html.erb +15 -0
  82. data/config/routes.rb +11 -0
  83. data/db/migrate/20210621185018_create_rmp.rb +46 -0
  84. data/lib/generators/rails_mini_profiler/USAGE +2 -0
  85. data/lib/generators/rails_mini_profiler/install_generator.rb +40 -0
  86. data/lib/generators/rails_mini_profiler/templates/rails_mini_profiler.js.erb +13 -0
  87. data/lib/generators/rails_mini_profiler/templates/rails_mini_profiler.rb.erb +29 -0
  88. data/lib/rails_mini_profiler/badge.rb +84 -0
  89. data/lib/rails_mini_profiler/configuration/storage.rb +47 -0
  90. data/lib/rails_mini_profiler/configuration/user_interface.rb +48 -0
  91. data/lib/rails_mini_profiler/configuration.rb +65 -0
  92. data/lib/rails_mini_profiler/engine.rb +34 -0
  93. data/lib/rails_mini_profiler/flamegraph_guard.rb +47 -0
  94. data/lib/rails_mini_profiler/guard.rb +57 -0
  95. data/lib/rails_mini_profiler/logger.rb +25 -0
  96. data/lib/rails_mini_profiler/middleware.rb +74 -0
  97. data/lib/rails_mini_profiler/models/base_model.rb +23 -0
  98. data/lib/rails_mini_profiler/redirect.rb +33 -0
  99. data/lib/rails_mini_profiler/request_context.rb +86 -0
  100. data/lib/rails_mini_profiler/request_wrapper.rb +69 -0
  101. data/lib/rails_mini_profiler/response_wrapper.rb +32 -0
  102. data/lib/rails_mini_profiler/tracing/controller_tracer.rb +15 -0
  103. data/lib/rails_mini_profiler/tracing/null_trace.rb +7 -0
  104. data/lib/rails_mini_profiler/tracing/sequel_tracer.rb +37 -0
  105. data/lib/rails_mini_profiler/tracing/sequel_tracker.rb +37 -0
  106. data/lib/rails_mini_profiler/tracing/subscriptions.rb +34 -0
  107. data/lib/rails_mini_profiler/tracing/trace.rb +45 -0
  108. data/lib/rails_mini_profiler/tracing/trace_factory.rb +37 -0
  109. data/lib/rails_mini_profiler/tracing/tracer.rb +31 -0
  110. data/lib/rails_mini_profiler/tracing/view_tracer.rb +12 -0
  111. data/lib/rails_mini_profiler/tracing.rb +11 -0
  112. data/lib/rails_mini_profiler/user.rb +40 -0
  113. data/lib/rails_mini_profiler/version.rb +5 -0
  114. data/lib/rails_mini_profiler.rb +79 -0
  115. data/lib/tasks/rails_mini_profiler_tasks.rake +8 -0
  116. data/public/rails_mini_profiler/speedscope/LICENSE +21 -0
  117. data/public/rails_mini_profiler/speedscope/demangle-cpp.1768f4cc.js +4 -0
  118. data/public/rails_mini_profiler/speedscope/demangle-cpp.1768f4cc.js.map +1 -0
  119. data/public/rails_mini_profiler/speedscope/favicon-16x16.f74b3187.png +0 -0
  120. data/public/rails_mini_profiler/speedscope/favicon-32x32.bc503437.png +0 -0
  121. data/public/rails_mini_profiler/speedscope/file-format-schema.json +324 -0
  122. data/public/rails_mini_profiler/speedscope/import.e3a73ef4.js +117 -0
  123. data/public/rails_mini_profiler/speedscope/import.e3a73ef4.js.map +1 -0
  124. data/public/rails_mini_profiler/speedscope/index.html +2 -0
  125. data/public/rails_mini_profiler/speedscope/release.txt +3 -0
  126. data/public/rails_mini_profiler/speedscope/reset.8c46b7a1.css +2 -0
  127. data/public/rails_mini_profiler/speedscope/reset.8c46b7a1.css.map +1 -0
  128. data/public/rails_mini_profiler/speedscope/source-map.438fa06b.js +24 -0
  129. data/public/rails_mini_profiler/speedscope/source-map.438fa06b.js.map +1 -0
  130. data/public/rails_mini_profiler/speedscope/speedscope.026f36b0.js +200 -0
  131. data/public/rails_mini_profiler/speedscope/speedscope.026f36b0.js.map +1 -0
  132. data/vendor/assets/images/bookmark.svg +10 -0
  133. data/vendor/assets/images/chart.svg +12 -0
  134. data/vendor/assets/images/check.svg +3 -0
  135. data/vendor/assets/images/chevron.svg +3 -0
  136. data/vendor/assets/images/delete.svg +9 -0
  137. data/vendor/assets/images/filter.svg +1 -0
  138. data/vendor/assets/images/graph.svg +11 -0
  139. data/vendor/assets/images/logo.svg +18 -0
  140. data/vendor/assets/images/logo_variant.svg +32 -0
  141. data/vendor/assets/images/search.svg +9 -0
  142. data/vendor/assets/images/setting.svg +10 -0
  143. data/vendor/assets/images/show.svg +11 -0
  144. data/vendor/assets/javascripts/rails-mini-profiler.css +1 -0
  145. data/vendor/assets/javascripts/rails-mini-profiler.js +1 -0
  146. metadata +248 -0
@@ -0,0 +1,82 @@
1
+ .trace-list {
2
+ padding: 0;
3
+ margin: 0;
4
+ }
5
+
6
+ .trace {
7
+ display: flex;
8
+ align-items: center;
9
+ justify-content: flex-start;
10
+ padding: 0.25em 0;
11
+ list-style: none;
12
+ }
13
+
14
+ .trace:nth-child(odd) {
15
+ background: var(--grey-100);
16
+ }
17
+
18
+ .trace .trace-bar {
19
+ position: relative;
20
+ height: 16px;
21
+ padding: 0;
22
+ margin: 0;
23
+ background: linear-gradient(to top right, var(--grey-500), var(--grey-400));
24
+ cursor: pointer;
25
+ }
26
+
27
+ .instantiation-trace .trace-bar {
28
+ background: linear-gradient(to top right, var(--green-400), var(--green-300));
29
+ }
30
+
31
+ .sequel-trace .trace-bar {
32
+ background: linear-gradient(to top right, var(--green-500), var(--green-400));
33
+ }
34
+
35
+ .controller-trace .trace-bar {
36
+ background: linear-gradient(to top right, var(--yellow-500), var(--yellow-400));
37
+ }
38
+
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));
42
+ }
43
+
44
+ .trace-name {
45
+ overflow: hidden;
46
+ box-sizing: border-box;
47
+ padding: 0 0.5em;
48
+ margin: 0;
49
+ color: var(--grey-400);
50
+ font-size: 14px;
51
+ text-align: right;
52
+ text-overflow: ellipsis;
53
+ }
54
+
55
+ .trace-payload {
56
+ margin: 0;
57
+ }
58
+
59
+ .sequel-trace-query {
60
+ overflow: auto;
61
+ max-height: 100px;
62
+ padding: 1em 1em;
63
+ background: var(--grey-100);
64
+ white-space: pre-wrap;
65
+ }
66
+
67
+ .sequel-trace-binds {
68
+ overflow: auto;
69
+ max-height: 100px;
70
+ padding: 0.5em 1em;
71
+ margin: 0 0 1em 0;
72
+ background: var(--grey-50);
73
+ font-size: 12px;
74
+ white-space: pre-wrap;
75
+ }
76
+
77
+ .trace-table {
78
+ width: 100%;
79
+ border: hidden 1px var(--border-color);
80
+ margin-top: 1em;
81
+ border-collapse: collapse;
82
+ }
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ module RailsMiniProfiler
4
+ class ApplicationRecord < ActiveRecord::Base
5
+ if RailsMiniProfiler.storage_configuration.database.present?
6
+ establish_connection(RailsMiniProfiler.storage_configuration.database)
7
+ end
8
+
9
+ self.abstract_class = true
10
+
11
+ def self.record_timestamps
12
+ # Some applications may disable timestamp setting, but in the context of the engine we always want to record
13
+ # timestamps, as engine functionality relies on it.
14
+ true
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,37 @@
1
+ # frozen_string_literal: true
2
+
3
+ # == Schema Information
4
+ #
5
+ # Table name: rmp_traces
6
+ #
7
+ # id :integer not null, primary key
8
+ # rmp_profiled_request_id :bigint not null
9
+ # name :string
10
+ # start :bigint
11
+ # finish :bigint
12
+ # duration :integer
13
+ # allocations :bigint
14
+ # payload :json
15
+ # backtrace :json
16
+ # created_at :datetime not null
17
+ # updated_at :datetime not null
18
+ #
19
+ # Indexes
20
+ #
21
+ # index_rmp_traces_on_rmp_profiled_request_id (rmp_profiled_request_id)
22
+ #
23
+ module RailsMiniProfiler
24
+ class ControllerTrace < Trace
25
+ store :payload, accessors: %i[view_runtime db_runtime]
26
+
27
+ class << self
28
+ def find_sti_class(_)
29
+ super(name)
30
+ end
31
+
32
+ def sti_name
33
+ 'process_action.action_controller'
34
+ end
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,37 @@
1
+ # frozen_string_literal: true
2
+
3
+ # == Schema Information
4
+ #
5
+ # Table name: rmp_flamegraphs
6
+ #
7
+ # id :integer not null, primary key
8
+ # rmp_profiled_request_id :bigint not null
9
+ # data :binary
10
+ # created_at :datetime not null
11
+ # updated_at :datetime not null
12
+ #
13
+ # Indexes
14
+ #
15
+ # index_rmp_flamegraphs_on_rmp_profiled_request_id (rmp_profiled_request_id)
16
+ #
17
+ module RailsMiniProfiler
18
+ class Flamegraph < RailsMiniProfiler::ApplicationRecord
19
+ self.table_name = RailsMiniProfiler.storage_configuration.flamegraphs_table
20
+
21
+ belongs_to :profiled_request,
22
+ class_name: 'RailsMiniProfiler::ProfiledRequest',
23
+ foreign_key: :rmp_profiled_request_id
24
+
25
+ before_save :compress
26
+
27
+ def json_data
28
+ @json_data = ActiveSupport::Gzip.decompress(data)
29
+ end
30
+
31
+ private
32
+
33
+ def compress
34
+ self.data = ActiveSupport::Gzip.compress(data)
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,37 @@
1
+ # frozen_string_literal: true
2
+
3
+ # == Schema Information
4
+ #
5
+ # Table name: rmp_traces
6
+ #
7
+ # id :integer not null, primary key
8
+ # rmp_profiled_request_id :bigint not null
9
+ # name :string
10
+ # start :bigint
11
+ # finish :bigint
12
+ # duration :integer
13
+ # allocations :bigint
14
+ # payload :json
15
+ # backtrace :json
16
+ # created_at :datetime not null
17
+ # updated_at :datetime not null
18
+ #
19
+ # Indexes
20
+ #
21
+ # index_rmp_traces_on_rmp_profiled_request_id (rmp_profiled_request_id)
22
+ #
23
+ module RailsMiniProfiler
24
+ class InstantiationTrace < Trace
25
+ store :payload, accessors: %i[record_count class_name]
26
+
27
+ class << self
28
+ def find_sti_class(_)
29
+ super(name)
30
+ end
31
+
32
+ def sti_name
33
+ 'instantiation.active_record'
34
+ end
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,65 @@
1
+ # frozen_string_literal: true
2
+
3
+ # == Schema Information
4
+ #
5
+ # Table name: rmp_profiled_requests
6
+ #
7
+ # id :integer not null, primary key
8
+ # user_id :string
9
+ # start :bigint
10
+ # finish :bigint
11
+ # duration :integer
12
+ # allocations :bigint
13
+ # request_path :string
14
+ # request_query_string :string
15
+ # request_method :string
16
+ # request_headers :json
17
+ # request_body :text
18
+ # response_status :integer
19
+ # response_body :text
20
+ # response_headers :json
21
+ # response_media_type :string
22
+ # created_at :datetime not null
23
+ # updated_at :datetime not null
24
+ #
25
+ # Indexes
26
+ #
27
+ # index_rmp_profiled_requests_on_created_at (created_at)
28
+ #
29
+ module RailsMiniProfiler
30
+ class ProfiledRequest < RailsMiniProfiler::ApplicationRecord
31
+ self.table_name = RailsMiniProfiler.storage_configuration.profiled_requests_table
32
+
33
+ has_one :flamegraph,
34
+ class_name: 'RailsMiniProfiler::Flamegraph',
35
+ foreign_key: :rmp_profiled_request_id,
36
+ dependent: :destroy
37
+
38
+ has_many :traces,
39
+ class_name: 'RailsMiniProfiler::Trace',
40
+ foreign_key: :rmp_profiled_request_id,
41
+ dependent: :destroy
42
+
43
+ def request=(request)
44
+ self.request_body = request.body
45
+ self.request_headers = request.headers
46
+ self.request_method = request.method
47
+ self.request_path = request.path
48
+ self.request_query_string = request.query_string
49
+ end
50
+
51
+ def response=(response)
52
+ self.response_body = response.body
53
+ self.response_media_type = response.media_type
54
+ self.response_headers = response.headers
55
+ self.response_status = response.status
56
+ end
57
+
58
+ def total_time=(total_time)
59
+ self.start = total_time.start
60
+ self.finish = total_time.finish
61
+ self.duration = total_time.duration
62
+ self.allocations = total_time.allocations
63
+ end
64
+ end
65
+ end
@@ -0,0 +1,37 @@
1
+ # frozen_string_literal: true
2
+
3
+ # == Schema Information
4
+ #
5
+ # Table name: rmp_traces
6
+ #
7
+ # id :integer not null, primary key
8
+ # rmp_profiled_request_id :bigint not null
9
+ # name :string
10
+ # start :bigint
11
+ # finish :bigint
12
+ # duration :integer
13
+ # allocations :bigint
14
+ # payload :json
15
+ # backtrace :json
16
+ # created_at :datetime not null
17
+ # updated_at :datetime not null
18
+ #
19
+ # Indexes
20
+ #
21
+ # index_rmp_traces_on_rmp_profiled_request_id (rmp_profiled_request_id)
22
+ #
23
+ module RailsMiniProfiler
24
+ class RenderPartialTrace < Trace
25
+ store :payload, accessors: %i[identifier]
26
+
27
+ class << self
28
+ def find_sti_class(_)
29
+ super(name)
30
+ end
31
+
32
+ def sti_name
33
+ 'render_partial.action_view'
34
+ end
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,37 @@
1
+ # frozen_string_literal: true
2
+
3
+ # == Schema Information
4
+ #
5
+ # Table name: rmp_traces
6
+ #
7
+ # id :integer not null, primary key
8
+ # rmp_profiled_request_id :bigint not null
9
+ # name :string
10
+ # start :bigint
11
+ # finish :bigint
12
+ # duration :integer
13
+ # allocations :bigint
14
+ # payload :json
15
+ # backtrace :json
16
+ # created_at :datetime not null
17
+ # updated_at :datetime not null
18
+ #
19
+ # Indexes
20
+ #
21
+ # index_rmp_traces_on_rmp_profiled_request_id (rmp_profiled_request_id)
22
+ #
23
+ module RailsMiniProfiler
24
+ class RenderTemplateTrace < Trace
25
+ store :payload, accessors: %i[identifier]
26
+
27
+ class << self
28
+ def find_sti_class(_)
29
+ super(name)
30
+ end
31
+
32
+ def sti_name
33
+ 'render_template.action_view'
34
+ end
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,35 @@
1
+ # frozen_string_literal: true
2
+
3
+ # == Schema Information
4
+ #
5
+ # Table name: rmp_traces
6
+ #
7
+ # id :integer not null, primary key
8
+ # rmp_profiled_request_id :bigint not null
9
+ # name :string
10
+ # start :bigint
11
+ # finish :bigint
12
+ # duration :integer
13
+ # allocations :bigint
14
+ # payload :json
15
+ # backtrace :json
16
+ # created_at :datetime not null
17
+ # updated_at :datetime not null
18
+ #
19
+ # Indexes
20
+ #
21
+ # index_rmp_traces_on_rmp_profiled_request_id (rmp_profiled_request_id)
22
+ #
23
+ module RailsMiniProfiler
24
+ class RmpTrace < Trace
25
+ class << self
26
+ def find_sti_class(_)
27
+ super(name)
28
+ end
29
+
30
+ def sti_name
31
+ 'rails_mini_profiler.total_time'
32
+ end
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,37 @@
1
+ # frozen_string_literal: true
2
+
3
+ # == Schema Information
4
+ #
5
+ # Table name: rmp_traces
6
+ #
7
+ # id :integer not null, primary key
8
+ # rmp_profiled_request_id :bigint not null
9
+ # name :string
10
+ # start :bigint
11
+ # finish :bigint
12
+ # duration :integer
13
+ # allocations :bigint
14
+ # payload :json
15
+ # backtrace :json
16
+ # created_at :datetime not null
17
+ # updated_at :datetime not null
18
+ #
19
+ # Indexes
20
+ #
21
+ # index_rmp_traces_on_rmp_profiled_request_id (rmp_profiled_request_id)
22
+ #
23
+ module RailsMiniProfiler
24
+ class SequelTrace < Trace
25
+ store :payload, accessors: %i[name sql binds]
26
+
27
+ class << self
28
+ def find_sti_class(_)
29
+ super(name)
30
+ end
31
+
32
+ def sti_name
33
+ 'sql.active_record'
34
+ end
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,46 @@
1
+ # frozen_string_literal: true
2
+
3
+ # == Schema Information
4
+ #
5
+ # Table name: rmp_traces
6
+ #
7
+ # id :integer not null, primary key
8
+ # rmp_profiled_request_id :bigint not null
9
+ # name :string
10
+ # start :bigint
11
+ # finish :bigint
12
+ # duration :integer
13
+ # allocations :bigint
14
+ # payload :json
15
+ # backtrace :json
16
+ # created_at :datetime not null
17
+ # updated_at :datetime not null
18
+ #
19
+ # Indexes
20
+ #
21
+ # index_rmp_traces_on_rmp_profiled_request_id (rmp_profiled_request_id)
22
+ #
23
+ module RailsMiniProfiler
24
+ class Trace < RailsMiniProfiler::ApplicationRecord
25
+ self.table_name = RailsMiniProfiler.storage_configuration.traces_table
26
+ self.inheritance_column = :name
27
+
28
+ belongs_to :profiled_request,
29
+ class_name: 'RailsMiniProfiler::ProfiledRequest',
30
+ 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
+ end
46
+ end