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.
- checksums.yaml +7 -0
- data/LICENSE +20 -0
- data/README.md +302 -0
- data/app/assets/config/rails_mini_profiler_manifest.js +1 -0
- data/app/assets/javascripts/rails_mini_profiler.js +15 -0
- data/app/assets/stylesheets/rails_mini_profiler/application.css +16 -0
- data/app/controllers/rails_mini_profiler/application_controller.rb +33 -0
- data/app/controllers/rails_mini_profiler/flamegraphs_controller.rb +23 -0
- data/app/controllers/rails_mini_profiler/profiled_requests_controller.rb +68 -0
- data/app/helpers/rails_mini_profiler/application_helper.rb +23 -0
- data/app/helpers/rails_mini_profiler/profiled_requests_helper.rb +16 -0
- data/app/javascript/images/bookmark.svg +10 -0
- data/app/javascript/images/chart.svg +12 -0
- data/app/javascript/images/check.svg +3 -0
- data/app/javascript/images/chevron.svg +3 -0
- data/app/javascript/images/delete.svg +9 -0
- data/app/javascript/images/filter.svg +1 -0
- data/app/javascript/images/graph.svg +11 -0
- data/app/javascript/images/logo.svg +18 -0
- data/app/javascript/images/logo_variant.svg +32 -0
- data/app/javascript/images/search.svg +9 -0
- data/app/javascript/images/setting.svg +10 -0
- data/app/javascript/images/show.svg +11 -0
- data/app/javascript/js/checklist_controller.js +48 -0
- data/app/javascript/js/enable_controller.js +24 -0
- data/app/javascript/js/filter_controller.js +44 -0
- data/app/javascript/js/search_controller.js +18 -0
- data/app/javascript/js/select_controller.js +47 -0
- data/app/javascript/packs/rails-mini-profiler.js +88 -0
- data/app/javascript/stylesheets/components/page_header/page_header.scss +3 -0
- data/app/javascript/stylesheets/components/pagination.scss +55 -0
- data/app/javascript/stylesheets/components/profiled_request_table/placeholder.scss +33 -0
- data/app/javascript/stylesheets/components/profiled_request_table/profiled_request_table.scss +179 -0
- data/app/javascript/stylesheets/flamegraph.scss +10 -0
- data/app/javascript/stylesheets/flashes.scss +15 -0
- data/app/javascript/stylesheets/navbar.scss +44 -0
- data/app/javascript/stylesheets/profiled_requests.scss +89 -0
- data/app/javascript/stylesheets/rails-mini-profiler.scss +205 -0
- data/app/javascript/stylesheets/traces.scss +82 -0
- data/app/models/rails_mini_profiler/application_record.rb +17 -0
- data/app/models/rails_mini_profiler/controller_trace.rb +37 -0
- data/app/models/rails_mini_profiler/flamegraph.rb +37 -0
- data/app/models/rails_mini_profiler/instantiation_trace.rb +37 -0
- data/app/models/rails_mini_profiler/profiled_request.rb +65 -0
- data/app/models/rails_mini_profiler/render_partial_trace.rb +37 -0
- data/app/models/rails_mini_profiler/render_template_trace.rb +37 -0
- data/app/models/rails_mini_profiler/rmp_trace.rb +35 -0
- data/app/models/rails_mini_profiler/sequel_trace.rb +37 -0
- data/app/models/rails_mini_profiler/trace.rb +46 -0
- data/app/presenters/rails_mini_profiler/base_presenter.rb +25 -0
- data/app/presenters/rails_mini_profiler/controller_trace_presenter.rb +18 -0
- data/app/presenters/rails_mini_profiler/instantiation_trace_presenter.rb +14 -0
- data/app/presenters/rails_mini_profiler/profiled_request_presenter.rb +38 -0
- data/app/presenters/rails_mini_profiler/render_partial_trace_presenter.rb +11 -0
- data/app/presenters/rails_mini_profiler/render_template_trace_presenter.rb +15 -0
- data/app/presenters/rails_mini_profiler/rmp_trace_presenter.rb +9 -0
- data/app/presenters/rails_mini_profiler/sequel_trace_presenter.rb +69 -0
- data/app/presenters/rails_mini_profiler/trace_presenter.rb +61 -0
- data/app/search/rails_mini_profiler/base_search.rb +67 -0
- data/app/search/rails_mini_profiler/profiled_request_search.rb +34 -0
- data/app/views/layouts/rails_mini_profiler/application.html.erb +15 -0
- data/app/views/layouts/rails_mini_profiler/flamegraph.html.erb +11 -0
- data/app/views/models/_flamegraph.json.jb +3 -0
- data/app/views/models/_profiled_request.jb +3 -0
- data/app/views/models/_trace.jb +3 -0
- data/app/views/rails_mini_profiler/badge.html.erb +37 -0
- data/app/views/rails_mini_profiler/flamegraphs/show.html.erb +13 -0
- data/app/views/rails_mini_profiler/flamegraphs/show.json.jb +3 -0
- data/app/views/rails_mini_profiler/profiled_requests/index.html.erb +9 -0
- data/app/views/rails_mini_profiler/profiled_requests/index.json.jb +3 -0
- data/app/views/rails_mini_profiler/profiled_requests/shared/_trace.html.erb +40 -0
- data/app/views/rails_mini_profiler/profiled_requests/shared/header/_header.erb +20 -0
- data/app/views/rails_mini_profiler/profiled_requests/shared/table/_placeholder.erb +12 -0
- data/app/views/rails_mini_profiler/profiled_requests/shared/table/_table.erb +14 -0
- data/app/views/rails_mini_profiler/profiled_requests/shared/table/_table_head.erb +125 -0
- data/app/views/rails_mini_profiler/profiled_requests/shared/table/_table_row.erb +21 -0
- data/app/views/rails_mini_profiler/profiled_requests/show.html.erb +40 -0
- data/app/views/rails_mini_profiler/profiled_requests/show.json.jb +5 -0
- data/app/views/rails_mini_profiler/shared/_flashes.html.erb +8 -0
- data/app/views/rails_mini_profiler/shared/_head.erb +13 -0
- data/app/views/rails_mini_profiler/shared/_navbar.html.erb +15 -0
- data/config/routes.rb +11 -0
- data/db/migrate/20210621185018_create_rmp.rb +46 -0
- data/lib/generators/rails_mini_profiler/USAGE +2 -0
- data/lib/generators/rails_mini_profiler/install_generator.rb +40 -0
- data/lib/generators/rails_mini_profiler/templates/rails_mini_profiler.js.erb +13 -0
- data/lib/generators/rails_mini_profiler/templates/rails_mini_profiler.rb.erb +29 -0
- data/lib/rails_mini_profiler/badge.rb +84 -0
- data/lib/rails_mini_profiler/configuration/storage.rb +47 -0
- data/lib/rails_mini_profiler/configuration/user_interface.rb +48 -0
- data/lib/rails_mini_profiler/configuration.rb +65 -0
- data/lib/rails_mini_profiler/engine.rb +34 -0
- data/lib/rails_mini_profiler/flamegraph_guard.rb +47 -0
- data/lib/rails_mini_profiler/guard.rb +57 -0
- data/lib/rails_mini_profiler/logger.rb +25 -0
- data/lib/rails_mini_profiler/middleware.rb +74 -0
- data/lib/rails_mini_profiler/models/base_model.rb +23 -0
- data/lib/rails_mini_profiler/redirect.rb +33 -0
- data/lib/rails_mini_profiler/request_context.rb +86 -0
- data/lib/rails_mini_profiler/request_wrapper.rb +69 -0
- data/lib/rails_mini_profiler/response_wrapper.rb +32 -0
- data/lib/rails_mini_profiler/tracing/controller_tracer.rb +15 -0
- data/lib/rails_mini_profiler/tracing/null_trace.rb +7 -0
- data/lib/rails_mini_profiler/tracing/sequel_tracer.rb +37 -0
- data/lib/rails_mini_profiler/tracing/sequel_tracker.rb +37 -0
- data/lib/rails_mini_profiler/tracing/subscriptions.rb +34 -0
- data/lib/rails_mini_profiler/tracing/trace.rb +45 -0
- data/lib/rails_mini_profiler/tracing/trace_factory.rb +37 -0
- data/lib/rails_mini_profiler/tracing/tracer.rb +31 -0
- data/lib/rails_mini_profiler/tracing/view_tracer.rb +12 -0
- data/lib/rails_mini_profiler/tracing.rb +11 -0
- data/lib/rails_mini_profiler/user.rb +40 -0
- data/lib/rails_mini_profiler/version.rb +5 -0
- data/lib/rails_mini_profiler.rb +79 -0
- data/lib/tasks/rails_mini_profiler_tasks.rake +8 -0
- data/public/rails_mini_profiler/speedscope/LICENSE +21 -0
- data/public/rails_mini_profiler/speedscope/demangle-cpp.1768f4cc.js +4 -0
- data/public/rails_mini_profiler/speedscope/demangle-cpp.1768f4cc.js.map +1 -0
- data/public/rails_mini_profiler/speedscope/favicon-16x16.f74b3187.png +0 -0
- data/public/rails_mini_profiler/speedscope/favicon-32x32.bc503437.png +0 -0
- data/public/rails_mini_profiler/speedscope/file-format-schema.json +324 -0
- data/public/rails_mini_profiler/speedscope/import.e3a73ef4.js +117 -0
- data/public/rails_mini_profiler/speedscope/import.e3a73ef4.js.map +1 -0
- data/public/rails_mini_profiler/speedscope/index.html +2 -0
- data/public/rails_mini_profiler/speedscope/release.txt +3 -0
- data/public/rails_mini_profiler/speedscope/reset.8c46b7a1.css +2 -0
- data/public/rails_mini_profiler/speedscope/reset.8c46b7a1.css.map +1 -0
- data/public/rails_mini_profiler/speedscope/source-map.438fa06b.js +24 -0
- data/public/rails_mini_profiler/speedscope/source-map.438fa06b.js.map +1 -0
- data/public/rails_mini_profiler/speedscope/speedscope.026f36b0.js +200 -0
- data/public/rails_mini_profiler/speedscope/speedscope.026f36b0.js.map +1 -0
- data/vendor/assets/images/bookmark.svg +10 -0
- data/vendor/assets/images/chart.svg +12 -0
- data/vendor/assets/images/check.svg +3 -0
- data/vendor/assets/images/chevron.svg +3 -0
- data/vendor/assets/images/delete.svg +9 -0
- data/vendor/assets/images/filter.svg +1 -0
- data/vendor/assets/images/graph.svg +11 -0
- data/vendor/assets/images/logo.svg +18 -0
- data/vendor/assets/images/logo_variant.svg +32 -0
- data/vendor/assets/images/search.svg +9 -0
- data/vendor/assets/images/setting.svg +10 -0
- data/vendor/assets/images/show.svg +11 -0
- data/vendor/assets/javascripts/rails-mini-profiler.css +1 -0
- data/vendor/assets/javascripts/rails-mini-profiler.js +1 -0
- 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
|