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
|