rails_performance 1.2.3 → 1.3.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.
- checksums.yaml +4 -4
- data/README.md +5 -13
- data/Rakefile +14 -14
- data/app/assets/images/download.svg +3 -0
- data/app/controllers/rails_performance/base_controller.rb +21 -21
- data/app/controllers/rails_performance/concerns/csv_exportable.rb +29 -0
- data/app/controllers/rails_performance/rails_performance_controller.rb +96 -49
- data/app/helpers/rails_performance/rails_performance_helper.rb +152 -156
- data/app/views/rails_performance/javascripts/app.js +2 -2
- data/app/views/rails_performance/rails_performance/_export.html.erb +3 -0
- data/app/views/rails_performance/rails_performance/crashes.html.erb +8 -1
- data/app/views/rails_performance/rails_performance/index.html.erb +29 -0
- data/app/views/rails_performance/rails_performance/recent.html.erb +8 -6
- data/app/views/rails_performance/rails_performance/requests.html.erb +15 -1
- data/app/views/rails_performance/rails_performance/slow.html.erb +3 -0
- data/app/views/rails_performance/shared/_header.html.erb +0 -1
- data/app/views/rails_performance/stylesheets/style.css +10 -0
- data/config/routes.rb +16 -18
- data/lib/generators/rails_performance/install/install_generator.rb +1 -1
- data/lib/generators/rails_performance/install/templates/initializer.rb +56 -42
- data/lib/rails_performance/data_source.rb +120 -121
- data/lib/rails_performance/engine.rb +8 -8
- data/lib/rails_performance/extensions/trace.rb +32 -33
- data/lib/rails_performance/gems/custom_ext.rb +31 -34
- data/lib/rails_performance/gems/delayed_job_ext.rb +50 -54
- data/lib/rails_performance/gems/grape_ext.rb +33 -35
- data/lib/rails_performance/gems/rake_ext.rb +41 -44
- data/lib/rails_performance/gems/sidekiq_ext.rb +34 -37
- data/lib/rails_performance/instrument/metrics_collector.rb +50 -50
- data/lib/rails_performance/models/base_record.rb +33 -36
- data/lib/rails_performance/models/collection.rb +35 -36
- data/lib/rails_performance/models/custom_record.rb +47 -48
- data/lib/rails_performance/models/delayed_job_record.rb +61 -62
- data/lib/rails_performance/models/grape_record.rb +60 -61
- data/lib/rails_performance/models/rake_record.rb +48 -49
- data/lib/rails_performance/models/request_record.rb +128 -120
- data/lib/rails_performance/models/sidekiq_record.rb +65 -66
- data/lib/rails_performance/models/trace_record.rb +18 -19
- data/lib/rails_performance/rails/middleware.rb +75 -76
- data/lib/rails_performance/rails/query_builder.rb +18 -20
- data/lib/rails_performance/reports/base_report.rb +60 -60
- data/lib/rails_performance/reports/breakdown_report.rb +15 -18
- data/lib/rails_performance/reports/crash_report.rb +15 -17
- data/lib/rails_performance/reports/percentile_report.rb +14 -0
- data/lib/rails_performance/reports/recent_requests_report.rb +24 -24
- data/lib/rails_performance/reports/requests_report.rb +30 -27
- data/lib/rails_performance/reports/response_time_report.rb +17 -17
- data/lib/rails_performance/reports/slow_requests_report.rb +4 -4
- data/lib/rails_performance/reports/throughput_report.rb +15 -17
- data/lib/rails_performance/reports/trace_report.rb +16 -18
- data/lib/rails_performance/thread/current_request.rb +33 -34
- data/lib/rails_performance/utils.rb +64 -54
- data/lib/rails_performance/version.rb +2 -2
- data/lib/rails_performance.rb +35 -36
- metadata +21 -17
@@ -1,27 +1,30 @@
|
|
1
|
-
module RailsPerformance
|
2
|
-
module Reports
|
3
|
-
class RequestsReport < BaseReport
|
4
|
-
def set_defaults
|
5
|
-
@sort ||= :count
|
6
|
-
end
|
7
|
-
|
8
|
-
def data
|
9
|
-
collect do |k, v|
|
10
|
-
durations
|
11
|
-
view_runtimes = v.collect{|e| e["view_runtime"]}.compact
|
12
|
-
db_runtimes
|
13
|
-
{
|
14
|
-
group:
|
15
|
-
count:
|
16
|
-
duration_average:
|
17
|
-
view_runtime_average: view_runtimes.sum.to_f / view_runtimes.size,
|
18
|
-
db_runtime_average:
|
19
|
-
duration_slowest:
|
20
|
-
view_runtime_slowest: view_runtimes.max,
|
21
|
-
db_runtime_slowest:
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
end
|
1
|
+
module RailsPerformance
|
2
|
+
module Reports
|
3
|
+
class RequestsReport < BaseReport
|
4
|
+
def set_defaults
|
5
|
+
@sort ||= :count
|
6
|
+
end
|
7
|
+
|
8
|
+
def data
|
9
|
+
collect do |k, v|
|
10
|
+
durations = v.collect { |e| e["duration"] }.compact
|
11
|
+
view_runtimes = v.collect { |e| e["view_runtime"] }.compact
|
12
|
+
db_runtimes = v.collect { |e| e["db_runtime"] }.compact
|
13
|
+
{
|
14
|
+
group: k,
|
15
|
+
count: v.size,
|
16
|
+
duration_average: durations.sum.to_f / durations.size,
|
17
|
+
view_runtime_average: view_runtimes.sum.to_f / view_runtimes.size,
|
18
|
+
db_runtime_average: db_runtimes.sum.to_f / db_runtimes.size,
|
19
|
+
duration_slowest: durations.max,
|
20
|
+
view_runtime_slowest: view_runtimes.max,
|
21
|
+
db_runtime_slowest: db_runtimes.max,
|
22
|
+
p50_duration: RailsPerformance::Utils.percentile(durations, 50),
|
23
|
+
p95_duration: RailsPerformance::Utils.percentile(durations, 95),
|
24
|
+
p99_duration: RailsPerformance::Utils.percentile(durations, 99),
|
25
|
+
}
|
26
|
+
end.sort_by { |e| -e[sort].to_f } # to_f because could ne NaN or nil
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
@@ -1,17 +1,17 @@
|
|
1
|
-
module RailsPerformance
|
2
|
-
module Reports
|
3
|
-
class ResponseTimeReport < BaseReport
|
4
|
-
def set_defaults
|
5
|
-
@group ||= :datetime
|
6
|
-
end
|
7
|
-
|
8
|
-
def data
|
9
|
-
calculate_data do |all, k, v|
|
10
|
-
durations = v.collect{|e| e["duration"]}.compact
|
11
|
-
next if durations.empty?
|
12
|
-
all[k] = durations.sum.to_f / durations.count
|
13
|
-
end
|
14
|
-
end
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|
1
|
+
module RailsPerformance
|
2
|
+
module Reports
|
3
|
+
class ResponseTimeReport < BaseReport
|
4
|
+
def set_defaults
|
5
|
+
@group ||= :datetime
|
6
|
+
end
|
7
|
+
|
8
|
+
def data
|
9
|
+
calculate_data do |all, k, v|
|
10
|
+
durations = v.collect { |e| e["duration"] }.compact
|
11
|
+
next if durations.empty?
|
12
|
+
all[k] = durations.sum.to_f / durations.count
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -7,10 +7,10 @@ module RailsPerformance
|
|
7
7
|
|
8
8
|
def data
|
9
9
|
db.data
|
10
|
-
.collect{|e| e.record_hash}
|
11
|
-
.select{|e| e if e[sort] > RailsPerformance.slow_requests_time_window.ago.to_i}
|
12
|
-
.sort{|a, b| b[sort] <=> a[sort]}
|
13
|
-
.filter{|e| e[:duration] > RailsPerformance.slow_requests_threshold.to_i}
|
10
|
+
.collect { |e| e.record_hash }
|
11
|
+
.select { |e| e if e[sort] > RailsPerformance.slow_requests_time_window.ago.to_i }
|
12
|
+
.sort { |a, b| b[sort] <=> a[sort] }
|
13
|
+
.filter { |e| e[:duration] > RailsPerformance.slow_requests_threshold.to_i }
|
14
14
|
.first(limit)
|
15
15
|
end
|
16
16
|
|
@@ -1,17 +1,15 @@
|
|
1
|
-
module RailsPerformance
|
2
|
-
module Reports
|
3
|
-
class ThroughputReport < BaseReport
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
end
|
17
|
-
end
|
1
|
+
module RailsPerformance
|
2
|
+
module Reports
|
3
|
+
class ThroughputReport < BaseReport
|
4
|
+
def set_defaults
|
5
|
+
@group ||= :datetime
|
6
|
+
end
|
7
|
+
|
8
|
+
def data
|
9
|
+
calculate_data do |all, k, v|
|
10
|
+
all[k] = v.count
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -1,18 +1,16 @@
|
|
1
|
-
module RailsPerformance
|
2
|
-
module Reports
|
3
|
-
class TraceReport
|
4
|
-
attr_reader :request_id
|
5
|
-
|
6
|
-
def initialize(request_id:)
|
7
|
-
@request_id = request_id
|
8
|
-
end
|
9
|
-
|
10
|
-
def data
|
11
|
-
key
|
12
|
-
JSON.parse(RailsPerformance.redis.get(key).presence ||
|
13
|
-
end
|
14
|
-
end
|
15
|
-
|
16
|
-
|
17
|
-
end
|
18
|
-
end
|
1
|
+
module RailsPerformance
|
2
|
+
module Reports
|
3
|
+
class TraceReport
|
4
|
+
attr_reader :request_id
|
5
|
+
|
6
|
+
def initialize(request_id:)
|
7
|
+
@request_id = request_id
|
8
|
+
end
|
9
|
+
|
10
|
+
def data
|
11
|
+
key = "trace|#{request_id}|END|#{RailsPerformance::SCHEMA}"
|
12
|
+
JSON.parse(RailsPerformance.redis.get(key).presence || "[]")
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -1,34 +1,33 @@
|
|
1
|
-
module RailsPerformance
|
2
|
-
class CurrentRequest
|
3
|
-
attr_reader :request_id, :tracings, :ignore
|
4
|
-
attr_accessor :data
|
5
|
-
attr_accessor :record
|
6
|
-
|
7
|
-
def
|
8
|
-
Thread.current[:rp_current_request] ||= CurrentRequest.new(SecureRandom.hex(16))
|
9
|
-
end
|
10
|
-
|
11
|
-
def
|
12
|
-
CurrentRequest.init
|
13
|
-
end
|
14
|
-
|
15
|
-
def
|
16
|
-
RailsPerformance.log "----------------------------------------------------> CurrentRequest.cleanup !!!!!!!!!!!! -------------------------\n\n"
|
17
|
-
RailsPerformance.skip = false
|
18
|
-
Thread.current[:rp_current_request] = nil
|
19
|
-
end
|
20
|
-
|
21
|
-
def initialize(request_id)
|
22
|
-
@request_id = request_id
|
23
|
-
@tracings
|
24
|
-
@ignore
|
25
|
-
@data
|
26
|
-
@record
|
27
|
-
end
|
28
|
-
|
29
|
-
def trace(options = {})
|
30
|
-
@tracings << options.merge(time: Time.current.to_i)
|
31
|
-
end
|
32
|
-
|
33
|
-
|
34
|
-
end
|
1
|
+
module RailsPerformance
|
2
|
+
class CurrentRequest
|
3
|
+
attr_reader :request_id, :tracings, :ignore
|
4
|
+
attr_accessor :data
|
5
|
+
attr_accessor :record
|
6
|
+
|
7
|
+
def self.init
|
8
|
+
Thread.current[:rp_current_request] ||= CurrentRequest.new(SecureRandom.hex(16))
|
9
|
+
end
|
10
|
+
|
11
|
+
def self.current
|
12
|
+
CurrentRequest.init
|
13
|
+
end
|
14
|
+
|
15
|
+
def self.cleanup
|
16
|
+
RailsPerformance.log "----------------------------------------------------> CurrentRequest.cleanup !!!!!!!!!!!! -------------------------\n\n"
|
17
|
+
RailsPerformance.skip = false
|
18
|
+
Thread.current[:rp_current_request] = nil
|
19
|
+
end
|
20
|
+
|
21
|
+
def initialize(request_id)
|
22
|
+
@request_id = request_id
|
23
|
+
@tracings = []
|
24
|
+
@ignore = Set.new
|
25
|
+
@data = nil
|
26
|
+
@record = nil
|
27
|
+
end
|
28
|
+
|
29
|
+
def trace(options = {})
|
30
|
+
@tracings << options.merge(time: Time.current.to_i)
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
@@ -1,54 +1,64 @@
|
|
1
|
-
module RailsPerformance
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
#
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
keys
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
#
|
29
|
-
|
30
|
-
|
31
|
-
RailsPerformance.log " [SAVE]
|
32
|
-
RailsPerformance.
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
1
|
+
module RailsPerformance
|
2
|
+
class Utils
|
3
|
+
# date key in redis store
|
4
|
+
def self.cache_key(now = Date.today)
|
5
|
+
"date-#{now}"
|
6
|
+
end
|
7
|
+
|
8
|
+
# write to current slot
|
9
|
+
# time - date -minute
|
10
|
+
def self.field_key(now = Time.current)
|
11
|
+
now.strftime("%H:%M")
|
12
|
+
end
|
13
|
+
|
14
|
+
def self.fetch_from_redis(query)
|
15
|
+
RailsPerformance.log "\n\n [REDIS QUERY] --> #{query}\n\n"
|
16
|
+
|
17
|
+
keys = RailsPerformance.redis.keys(query)
|
18
|
+
return [] if keys.blank?
|
19
|
+
values = RailsPerformance.redis.mget(keys)
|
20
|
+
|
21
|
+
RailsPerformance.log "\n\n [FOUND] --> #{values.size}\n\n"
|
22
|
+
|
23
|
+
[keys, values]
|
24
|
+
end
|
25
|
+
|
26
|
+
def self.save_to_redis(key, value, expire = RailsPerformance.duration.to_i)
|
27
|
+
# TODO think here if add return
|
28
|
+
# return if value.empty?
|
29
|
+
|
30
|
+
RailsPerformance.log " [SAVE] key ---> #{key}\n"
|
31
|
+
RailsPerformance.log " [SAVE] value ---> #{value.to_json}\n\n"
|
32
|
+
RailsPerformance.redis.set(key, value.to_json, ex: expire.to_i)
|
33
|
+
end
|
34
|
+
|
35
|
+
def self.days
|
36
|
+
(RailsPerformance.duration / 1.day) + 1
|
37
|
+
end
|
38
|
+
|
39
|
+
def self.median(array)
|
40
|
+
sorted = array.sort
|
41
|
+
size = sorted.size
|
42
|
+
center = size / 2
|
43
|
+
|
44
|
+
if size == 0
|
45
|
+
nil
|
46
|
+
elsif size.even?
|
47
|
+
(sorted[center - 1] + sorted[center]) / 2.0
|
48
|
+
else
|
49
|
+
sorted[center]
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
def self.percentile(values, percentile)
|
54
|
+
return nil if values.empty?
|
55
|
+
|
56
|
+
sorted = values.sort
|
57
|
+
rank = (percentile.to_f / 100) * (sorted.size - 1)
|
58
|
+
|
59
|
+
lower = sorted[rank.floor]
|
60
|
+
upper = sorted[rank.ceil]
|
61
|
+
lower + (upper - lower) * (rank - rank.floor)
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
data/lib/rails_performance.rb
CHANGED
@@ -1,37 +1,37 @@
|
|
1
1
|
require "redis"
|
2
|
-
require "redis-namespace"
|
3
2
|
require "browser"
|
4
|
-
require
|
5
|
-
require_relative "
|
6
|
-
require_relative "rails_performance/rails/query_builder
|
7
|
-
require_relative "rails_performance/rails/middleware
|
8
|
-
require_relative "rails_performance/models/base_record
|
9
|
-
require_relative "rails_performance/models/request_record
|
10
|
-
require_relative "rails_performance/models/sidekiq_record
|
11
|
-
require_relative "rails_performance/models/delayed_job_record
|
12
|
-
require_relative "rails_performance/models/grape_record
|
13
|
-
require_relative "rails_performance/models/trace_record
|
14
|
-
require_relative "rails_performance/models/rake_record
|
15
|
-
require_relative "rails_performance/models/custom_record
|
16
|
-
require_relative "rails_performance/data_source
|
17
|
-
require_relative "rails_performance/utils
|
18
|
-
require_relative "rails_performance/reports/base_report
|
19
|
-
require_relative "rails_performance/reports/requests_report
|
20
|
-
require_relative "rails_performance/reports/crash_report
|
21
|
-
require_relative "rails_performance/reports/response_time_report
|
22
|
-
require_relative "rails_performance/reports/throughput_report
|
23
|
-
require_relative "rails_performance/reports/recent_requests_report
|
24
|
-
require_relative "rails_performance/reports/slow_requests_report
|
25
|
-
require_relative "rails_performance/reports/breakdown_report
|
26
|
-
require_relative "rails_performance/reports/trace_report
|
27
|
-
require_relative "rails_performance/
|
28
|
-
require_relative "rails_performance/
|
3
|
+
require "active_support/core_ext/integer"
|
4
|
+
require_relative "rails_performance/version"
|
5
|
+
require_relative "rails_performance/rails/query_builder"
|
6
|
+
require_relative "rails_performance/rails/middleware"
|
7
|
+
require_relative "rails_performance/models/base_record"
|
8
|
+
require_relative "rails_performance/models/request_record"
|
9
|
+
require_relative "rails_performance/models/sidekiq_record"
|
10
|
+
require_relative "rails_performance/models/delayed_job_record"
|
11
|
+
require_relative "rails_performance/models/grape_record"
|
12
|
+
require_relative "rails_performance/models/trace_record"
|
13
|
+
require_relative "rails_performance/models/rake_record"
|
14
|
+
require_relative "rails_performance/models/custom_record"
|
15
|
+
require_relative "rails_performance/data_source"
|
16
|
+
require_relative "rails_performance/utils"
|
17
|
+
require_relative "rails_performance/reports/base_report"
|
18
|
+
require_relative "rails_performance/reports/requests_report"
|
19
|
+
require_relative "rails_performance/reports/crash_report"
|
20
|
+
require_relative "rails_performance/reports/response_time_report"
|
21
|
+
require_relative "rails_performance/reports/throughput_report"
|
22
|
+
require_relative "rails_performance/reports/recent_requests_report"
|
23
|
+
require_relative "rails_performance/reports/slow_requests_report"
|
24
|
+
require_relative "rails_performance/reports/breakdown_report"
|
25
|
+
require_relative "rails_performance/reports/trace_report"
|
26
|
+
require_relative "rails_performance/reports/percentile_report"
|
27
|
+
require_relative "rails_performance/extensions/trace"
|
28
|
+
require_relative "rails_performance/thread/current_request"
|
29
29
|
|
30
30
|
module RailsPerformance
|
31
31
|
FORMAT = "%Y%m%dT%H%M"
|
32
32
|
|
33
33
|
mattr_accessor :redis
|
34
|
-
@@redis = Redis
|
34
|
+
@@redis = Redis.new
|
35
35
|
|
36
36
|
mattr_accessor :duration
|
37
37
|
@@duration = 4.hours
|
@@ -67,24 +67,24 @@ module RailsPerformance
|
|
67
67
|
|
68
68
|
# Enable http basic authentication
|
69
69
|
mattr_accessor :http_basic_authentication_user_name
|
70
|
-
@@http_basic_authentication_user_name =
|
70
|
+
@@http_basic_authentication_user_name = "rails_performance"
|
71
71
|
|
72
72
|
# Enable http basic authentication
|
73
73
|
mattr_accessor :http_basic_authentication_password
|
74
|
-
@@http_basic_authentication_password =
|
74
|
+
@@http_basic_authentication_password = "password12"
|
75
75
|
|
76
76
|
# If you want to enable access by specific conditions
|
77
77
|
mattr_accessor :verify_access_proc
|
78
78
|
@@verify_access_proc = proc { |controller| true }
|
79
79
|
|
80
80
|
mattr_reader :ignored_endpoints
|
81
|
-
def
|
81
|
+
def self.ignored_endpoints=(endpoints)
|
82
82
|
@@ignored_endpoints = Set.new(endpoints)
|
83
83
|
end
|
84
84
|
@@ignored_endpoints = []
|
85
85
|
|
86
86
|
mattr_reader :ignored_paths
|
87
|
-
def
|
87
|
+
def self.ignored_paths=(paths)
|
88
88
|
@@ignored_paths = Set.new(paths)
|
89
89
|
end
|
90
90
|
@@ignored_paths = []
|
@@ -95,7 +95,7 @@ module RailsPerformance
|
|
95
95
|
|
96
96
|
# config home button link
|
97
97
|
mattr_accessor :home_link
|
98
|
-
@@home_link =
|
98
|
+
@@home_link = "/"
|
99
99
|
|
100
100
|
# skip performance tracking for these rake tasks
|
101
101
|
mattr_accessor :skipable_rake_tasks
|
@@ -113,11 +113,11 @@ module RailsPerformance
|
|
113
113
|
mattr_accessor :include_custom_events
|
114
114
|
@@include_custom_events = true
|
115
115
|
|
116
|
-
def
|
116
|
+
def self.setup
|
117
117
|
yield(self)
|
118
118
|
end
|
119
119
|
|
120
|
-
def
|
120
|
+
def self.log(message)
|
121
121
|
return unless RailsPerformance.debug
|
122
122
|
|
123
123
|
if ::Rails.logger
|
@@ -127,10 +127,9 @@ module RailsPerformance
|
|
127
127
|
puts(message)
|
128
128
|
end
|
129
129
|
end
|
130
|
-
|
131
130
|
end
|
132
131
|
|
133
132
|
require "rails_performance/engine"
|
134
133
|
|
135
|
-
require_relative
|
134
|
+
require_relative "rails_performance/gems/custom_ext"
|
136
135
|
RailsPerformance.send :extend, RailsPerformance::Gems::CustomExtension
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rails_performance
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.3.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Igor Kasyanchuk
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-
|
11
|
+
date: 2024-11-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: railties
|
@@ -38,20 +38,6 @@ dependencies:
|
|
38
38
|
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '0'
|
41
|
-
- !ruby/object:Gem::Dependency
|
42
|
-
name: redis-namespace
|
43
|
-
requirement: !ruby/object:Gem::Requirement
|
44
|
-
requirements:
|
45
|
-
- - ">="
|
46
|
-
- !ruby/object:Gem::Version
|
47
|
-
version: '0'
|
48
|
-
type: :runtime
|
49
|
-
prerelease: false
|
50
|
-
version_requirements: !ruby/object:Gem::Requirement
|
51
|
-
requirements:
|
52
|
-
- - ">="
|
53
|
-
- !ruby/object:Gem::Version
|
54
|
-
version: '0'
|
55
41
|
- !ruby/object:Gem::Dependency
|
56
42
|
name: browser
|
57
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -248,6 +234,20 @@ dependencies:
|
|
248
234
|
- - ">="
|
249
235
|
- !ruby/object:Gem::Version
|
250
236
|
version: '0'
|
237
|
+
- !ruby/object:Gem::Dependency
|
238
|
+
name: standardrb
|
239
|
+
requirement: !ruby/object:Gem::Requirement
|
240
|
+
requirements:
|
241
|
+
- - ">="
|
242
|
+
- !ruby/object:Gem::Version
|
243
|
+
version: '0'
|
244
|
+
type: :development
|
245
|
+
prerelease: false
|
246
|
+
version_requirements: !ruby/object:Gem::Requirement
|
247
|
+
requirements:
|
248
|
+
- - ">="
|
249
|
+
- !ruby/object:Gem::Version
|
250
|
+
version: '0'
|
251
251
|
description: 3rd party dependency-free solution how to monitor performance of your
|
252
252
|
Rails applications.
|
253
253
|
email:
|
@@ -263,6 +263,7 @@ files:
|
|
263
263
|
- app/assets/images/activity.svg
|
264
264
|
- app/assets/images/bot.svg
|
265
265
|
- app/assets/images/close.svg
|
266
|
+
- app/assets/images/download.svg
|
266
267
|
- app/assets/images/export.svg
|
267
268
|
- app/assets/images/git.svg
|
268
269
|
- app/assets/images/github.svg
|
@@ -272,6 +273,7 @@ files:
|
|
272
273
|
- app/assets/images/stat.svg
|
273
274
|
- app/assets/images/user.svg
|
274
275
|
- app/controllers/rails_performance/base_controller.rb
|
276
|
+
- app/controllers/rails_performance/concerns/csv_exportable.rb
|
275
277
|
- app/controllers/rails_performance/rails_performance_controller.rb
|
276
278
|
- app/helpers/rails_performance/rails_performance_helper.rb
|
277
279
|
- app/views/rails_performance/_panel.html.erb
|
@@ -284,6 +286,7 @@ files:
|
|
284
286
|
- app/views/rails_performance/javascripts/stupidtable.min.js
|
285
287
|
- app/views/rails_performance/javascripts/table.js
|
286
288
|
- app/views/rails_performance/layouts/rails_performance.html.erb
|
289
|
+
- app/views/rails_performance/rails_performance/_export.html.erb
|
287
290
|
- app/views/rails_performance/rails_performance/_recent_row.html.erb
|
288
291
|
- app/views/rails_performance/rails_performance/_summary.html.erb
|
289
292
|
- app/views/rails_performance/rails_performance/_trace.html.erb
|
@@ -334,6 +337,7 @@ files:
|
|
334
337
|
- lib/rails_performance/reports/base_report.rb
|
335
338
|
- lib/rails_performance/reports/breakdown_report.rb
|
336
339
|
- lib/rails_performance/reports/crash_report.rb
|
340
|
+
- lib/rails_performance/reports/percentile_report.rb
|
337
341
|
- lib/rails_performance/reports/recent_requests_report.rb
|
338
342
|
- lib/rails_performance/reports/requests_report.rb
|
339
343
|
- lib/rails_performance/reports/response_time_report.rb
|
@@ -362,7 +366,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
362
366
|
- !ruby/object:Gem::Version
|
363
367
|
version: '0'
|
364
368
|
requirements: []
|
365
|
-
rubygems_version: 3.
|
369
|
+
rubygems_version: 3.3.7
|
366
370
|
signing_key:
|
367
371
|
specification_version: 4
|
368
372
|
summary: Simple Rails Performance tracker. Alternative to the NewRelic, Datadog or
|