rails_performance 0.9.7 → 0.9.8

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