rails_performance 1.2.3 → 1.3.1
Sign up to get free protection for your applications and to get access to all the features.
- 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
|