rails_performance 0.9.7 → 0.9.8

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ecd06e180b5b5619c81180f22a852a74fe0a69fab43bb04b3d3d29b18b2c72fd
4
- data.tar.gz: 48c8335202f70441f1f252df55e8a8c5bebd750c491539d3a0f295c19a042e77
3
+ metadata.gz: 2fd36bc442cc4c70eb58e007e07df73a44bf7ce745de9d4e50b94d8f41bfa050
4
+ data.tar.gz: 590694fef0143bf1080ef4eb224f6c6beb657728c53d0a13c825b8012fa7ca04
5
5
  SHA512:
6
- metadata.gz: 256ca7fcb9d7dca9b33f4ee29b71644b112bdb29329b863a0aa04697ec528e96196660ded8eea3efafd8c473a23668140bb682368c0add0ec3ed428b09b4139f
7
- data.tar.gz: fb861466ac7f8b0a19eff40b9432856470537abd5c9f005585357f423ede2d6214beef2815ef9876bd881db0baa666eb790c559a3c558292432636381ef86a1a
6
+ metadata.gz: b49fda7d3eb4081a963c87417b1033a4a204f52b10bdb544a8984ab7367d77ebe38421e2447c68e45a4110d653ee27dd772a8ec5e6ac5ea80e7954e3210295d6
7
+ data.tar.gz: a649c5987684c72c3b6ded1847478a3bf4ace015054a4e2cbee293f33aaee3f3a442acefbcc59eeb9e9ae68cfd0ca95032c7d353ec38978bee664c4795c2baae
data/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Rails Performance
2
2
 
3
- [![Build Status](https://travis-ci.org/igorkasyanchuk/rails_performance.svg?branch=master)](https://travis-ci.org/igorkasyanchuk/rails_performance)
3
+ [![Tests](https://github.com/igorkasyanchuk/rails_performance/actions/workflows/ruby.yml/badge.svg)](https://github.com/igorkasyanchuk/rails_performance/actions/workflows/ruby.yml)
4
4
  [![RailsJazz](https://github.com/igorkasyanchuk/rails_time_travel/blob/main/docs/my_other.svg?raw=true)](https://www.railsjazz.com)
5
5
 
6
6
  A self-hosted tool to monitor the performance of your Ruby on Rails application.
@@ -24,7 +24,7 @@ All data are stored in `local` Redis and not sent to any 3rd party servers.
24
24
 
25
25
  ## Production
26
26
 
27
- Gem is production-ready. At least on my 2 applications with ~800 unique users per day it works perfectly.
27
+ Gem is production-ready. At least on my 2 applications with ~800 unique users per day it works perfectly.
28
28
 
29
29
  Just don't forget to protect performance dashboard with http basic auth or check of current_user.
30
30
 
@@ -66,6 +66,7 @@ end if defined?(RailsPerformance)
66
66
  ```
67
67
 
68
68
  ## Installation
69
+
69
70
  Add this line to your application's Gemfile:
70
71
 
71
72
  ```ruby
@@ -79,10 +80,19 @@ end
79
80
  ```
80
81
 
81
82
  And then execute:
83
+
82
84
  ```bash
83
85
  $ bundle
84
86
  ```
85
87
 
88
+ Create default configuration file:
89
+
90
+ ```bash
91
+ $ rails generate rails_performance:install
92
+ ```
93
+
94
+ Have a look at `config/initializers/rails_performance.rb` and adjust the configuration to your needs.
95
+
86
96
  You must also have installed Redis server, because this gem is storing data into it.
87
97
 
88
98
  After installation and configuration, start your Rails application, make a few requests, and open `https://localhost:3000/rails/performance` URL.
@@ -127,7 +137,6 @@ The idea of this gem grew from curriosity how many RPM my app receiving per day.
127
137
 
128
138
  - documentation in Readme
129
139
  - capture stacktrace of 500 errors and show in side panel
130
- - generator for initial config
131
140
  - CI for tests
132
141
  - time/zone config?
133
142
  - connected charts on dashboard, when zoom, when hover?
@@ -156,6 +165,8 @@ You are welcome to contribute. I've a big list of TODO.
156
165
  - https://github.com/alagos
157
166
  - https://github.com/klondaiker
158
167
  - https://github.com/jules2689
168
+ - https://github.com/PedroAugustoRamalhoDuarte
169
+ - https://github.com/haffla
159
170
 
160
171
  ## License
161
172
 
@@ -0,0 +1,8 @@
1
+ Description:
2
+ Generates initial config for rails_performance gem
3
+
4
+ Example:
5
+ bin/rails generate rails_performance:install
6
+
7
+ This will create:
8
+ config/initializers/rails_performance.rb
@@ -0,0 +1,8 @@
1
+ class RailsPerformance::InstallGenerator < Rails::Generators::Base
2
+ source_root File.expand_path('templates', __dir__)
3
+ desc "Generates initial config for rails_performance gem"
4
+
5
+ def copy_initializer_file
6
+ copy_file "initializer.rb", "config/initializers/rails_performance.rb"
7
+ end
8
+ end
@@ -0,0 +1,23 @@
1
+ RailsPerformance.setup do |config|
2
+ config.redis = Redis::Namespace.new("#{Rails.env}-rails-performance", redis: Redis.new)
3
+ config.duration = 4.hours
4
+
5
+ config.debug = false # currently not used>
6
+ config.enabled = true
7
+
8
+ # default path where to mount gem
9
+ config.mount_at = '/rails/performance'
10
+
11
+ # protect your Performance Dashboard with HTTP BASIC password
12
+ config.http_basic_authentication_enabled = false
13
+ config.http_basic_authentication_user_name = 'rails_performance'
14
+ config.http_basic_authentication_password = 'password12'
15
+
16
+ # if you need an additional rules to check user permissions
17
+ config.verify_access_proc = proc { |controller| true }
18
+ # for example when you have `current_user`
19
+ # config.verify_access_proc = proc { |controller| controller.current_user && controller.current_user.admin? }
20
+
21
+ # You can ignore endpoints with Rails standard notation controller#action
22
+ # config.ignored_endpoints = ['HomeController#contact']
23
+ end if defined?(RailsPerformance)
@@ -54,6 +54,12 @@ module RailsPerformance
54
54
  mattr_accessor :verify_access_proc
55
55
  @@verify_access_proc = proc { |controller| true }
56
56
 
57
+ mattr_reader :ignored_endpoints
58
+ def RailsPerformance.ignored_endpoints=(endpoints)
59
+ @@ignored_endpoints = Set.new(endpoints)
60
+ end
61
+ @@ignored_endpoints = []
62
+
57
63
  def self.setup
58
64
  yield(self)
59
65
  end
@@ -62,4 +68,4 @@ end
62
68
 
63
69
  RP = RailsPerformance
64
70
 
65
- require "rails_performance/engine"
71
+ require "rails_performance/engine"
@@ -1,3 +1,4 @@
1
+ require 'action_view/log_subscriber'
1
2
  require_relative './rails/middleware.rb'
2
3
  require_relative './models/collection.rb'
3
4
  require_relative './instrument/metrics_collector.rb'
@@ -18,8 +18,8 @@ module RailsPerformance
18
18
  def call(event_name, started, finished, event_id, payload)
19
19
  event = ActiveSupport::Notifications::Event.new(event_name, started, finished, event_id, payload)
20
20
 
21
- mount_url = RailsPerformance.mount_at || "/rails/performance/"
22
- return if event.payload[:path] =~ /^#{Regexp.escape(mount_url)}/
21
+ return if %r{#{RailsPerformance.mount_at}}.match? event.payload[:path]
22
+ return if RailsPerformance.ignored_endpoints.include? "#{event.payload[:controller]}##{event.payload[:action]}"
23
23
 
24
24
  record = {
25
25
  controller: event.payload[:controller],
@@ -60,8 +60,7 @@ module RailsPerformance
60
60
  def Utils.save_to_redis(key, value, expire = RP.duration.to_i)
61
61
  # puts " [SAVE] key ---> #{key}\n"
62
62
  # puts " value ---> #{value.to_json}\n\n"
63
- RP.redis.set(key, value.to_json)
64
- RP.redis.expire(key, expire.to_i)
63
+ RP.redis.set(key, value.to_json, ex: expire.to_i)
65
64
  end
66
65
 
67
66
  end
@@ -1,3 +1,3 @@
1
1
  module RailsPerformance
2
- VERSION = '0.9.7'
2
+ VERSION = '0.9.8'
3
3
  end
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: 0.9.7
4
+ version: 0.9.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Igor Kasyanchuk
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-01-25 00:00:00.000000000 Z
11
+ date: 2021-03-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -142,6 +142,9 @@ files:
142
142
  - app/views/rails_performance/stylesheets/panel.css
143
143
  - app/views/rails_performance/stylesheets/style.css
144
144
  - config/routes.rb
145
+ - lib/generators/rails_performance/install/USAGE
146
+ - lib/generators/rails_performance/install/install_generator.rb
147
+ - lib/generators/rails_performance/install/templates/initializer.rb
145
148
  - lib/rails_performance.rb
146
149
  - lib/rails_performance/data_source.rb
147
150
  - lib/rails_performance/engine.rb
@@ -184,7 +187,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
184
187
  - !ruby/object:Gem::Version
185
188
  version: '0'
186
189
  requirements: []
187
- rubygems_version: 3.1.4
190
+ rubygems_version: 3.0.3
188
191
  signing_key:
189
192
  specification_version: 4
190
193
  summary: Simple Rails Performance tracker. Alternative to the NewRelic, Datadog or