arlequin 0.1.1 → 0.1.2

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: c730c5e938ae2adf97538d4d30c69118a6dc4a9f8c290ed476cb8ea7d9115975
4
- data.tar.gz: c815726ab257c2c478f55783ca90e1e7a5f948b819099fc607ffad1114336cfb
3
+ metadata.gz: 3083b16c52cd3b8f777180ee21b6f838768bb8da81bd5079312fad9896ba14a7
4
+ data.tar.gz: c6daedc9d726407f3a26aabae5aa38865d2470cb1e24cf9f1fffd47d4106d761
5
5
  SHA512:
6
- metadata.gz: 726f9a8bb3f4c94aca726b43cdf3aa4bb09101122690ce78eab7ac90fa0ba34b4a2a222e39f6ebad1e9cb3f94f72f4b3fb9aa79ba2b8dcf889538f6db35af5e0
7
- data.tar.gz: b87de6cdb5c012cb6471a5b6497f3f6cb765774fe4f87ab6837ed496f07b32b106971a0fe5d6b473041a592a0d42c220afc85602102987b783d10345d77daeb4
6
+ metadata.gz: 8ae1b8e8d9d99928a76d562bbdfef3b2effe853f60fb2cfe2943a098532d919cb99a9c7f4b79396d09d88f4361794cd9656e62850c0465f370b8fc7dc6b1cfd3
7
+ data.tar.gz: a361f0f8055ed4e5f97580ede4ba096c6d6edb3638fe3c51e6078e54e833345a6f78f9d8524b118a78f860224b326e41d9a45d36e643db1917ea76c18c214f3f
data/.gitignore ADDED
@@ -0,0 +1,4 @@
1
+ /doc/
2
+ /tmp/
3
+ /log/
4
+ *.gem
data/.rubocop.yml ADDED
@@ -0,0 +1,2 @@
1
+ inherit_gem:
2
+ rubocop-rails-omakase: rubocop.yml
data/Gemfile ADDED
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ source "http://rubygems.org"
4
+
5
+ gemspec
6
+
7
+ gem "rubocop-rails-omakase", require: false, group: [ :development ]
data/Gemfile.lock ADDED
@@ -0,0 +1,232 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ arlequin (0.1.1)
5
+ rails (>= 5.0)
6
+
7
+ GEM
8
+ remote: http://rubygems.org/
9
+ specs:
10
+ actioncable (7.1.3.2)
11
+ actionpack (= 7.1.3.2)
12
+ activesupport (= 7.1.3.2)
13
+ nio4r (~> 2.0)
14
+ websocket-driver (>= 0.6.1)
15
+ zeitwerk (~> 2.6)
16
+ actionmailbox (7.1.3.2)
17
+ actionpack (= 7.1.3.2)
18
+ activejob (= 7.1.3.2)
19
+ activerecord (= 7.1.3.2)
20
+ activestorage (= 7.1.3.2)
21
+ activesupport (= 7.1.3.2)
22
+ mail (>= 2.7.1)
23
+ net-imap
24
+ net-pop
25
+ net-smtp
26
+ actionmailer (7.1.3.2)
27
+ actionpack (= 7.1.3.2)
28
+ actionview (= 7.1.3.2)
29
+ activejob (= 7.1.3.2)
30
+ activesupport (= 7.1.3.2)
31
+ mail (~> 2.5, >= 2.5.4)
32
+ net-imap
33
+ net-pop
34
+ net-smtp
35
+ rails-dom-testing (~> 2.2)
36
+ actionpack (7.1.3.2)
37
+ actionview (= 7.1.3.2)
38
+ activesupport (= 7.1.3.2)
39
+ nokogiri (>= 1.8.5)
40
+ racc
41
+ rack (>= 2.2.4)
42
+ rack-session (>= 1.0.1)
43
+ rack-test (>= 0.6.3)
44
+ rails-dom-testing (~> 2.2)
45
+ rails-html-sanitizer (~> 1.6)
46
+ actiontext (7.1.3.2)
47
+ actionpack (= 7.1.3.2)
48
+ activerecord (= 7.1.3.2)
49
+ activestorage (= 7.1.3.2)
50
+ activesupport (= 7.1.3.2)
51
+ globalid (>= 0.6.0)
52
+ nokogiri (>= 1.8.5)
53
+ actionview (7.1.3.2)
54
+ activesupport (= 7.1.3.2)
55
+ builder (~> 3.1)
56
+ erubi (~> 1.11)
57
+ rails-dom-testing (~> 2.2)
58
+ rails-html-sanitizer (~> 1.6)
59
+ activejob (7.1.3.2)
60
+ activesupport (= 7.1.3.2)
61
+ globalid (>= 0.3.6)
62
+ activemodel (7.1.3.2)
63
+ activesupport (= 7.1.3.2)
64
+ activerecord (7.1.3.2)
65
+ activemodel (= 7.1.3.2)
66
+ activesupport (= 7.1.3.2)
67
+ timeout (>= 0.4.0)
68
+ activestorage (7.1.3.2)
69
+ actionpack (= 7.1.3.2)
70
+ activejob (= 7.1.3.2)
71
+ activerecord (= 7.1.3.2)
72
+ activesupport (= 7.1.3.2)
73
+ marcel (~> 1.0)
74
+ activesupport (7.1.3.2)
75
+ base64
76
+ bigdecimal
77
+ concurrent-ruby (~> 1.0, >= 1.0.2)
78
+ connection_pool (>= 2.2.5)
79
+ drb
80
+ i18n (>= 1.6, < 2)
81
+ minitest (>= 5.1)
82
+ mutex_m
83
+ tzinfo (~> 2.0)
84
+ ast (2.4.2)
85
+ base64 (0.2.0)
86
+ bigdecimal (3.1.8)
87
+ builder (3.3.0)
88
+ concurrent-ruby (1.3.3)
89
+ connection_pool (2.4.1)
90
+ crass (1.0.6)
91
+ date (3.3.4)
92
+ drb (2.2.1)
93
+ erubi (1.13.0)
94
+ globalid (1.2.1)
95
+ activesupport (>= 6.1)
96
+ i18n (1.14.5)
97
+ concurrent-ruby (~> 1.0)
98
+ io-console (0.7.2)
99
+ irb (1.14.0)
100
+ rdoc (>= 4.0.0)
101
+ reline (>= 0.4.2)
102
+ json (2.7.2)
103
+ language_server-protocol (3.17.0.3)
104
+ loofah (2.22.0)
105
+ crass (~> 1.0.2)
106
+ nokogiri (>= 1.12.0)
107
+ mail (2.8.1)
108
+ mini_mime (>= 0.1.1)
109
+ net-imap
110
+ net-pop
111
+ net-smtp
112
+ marcel (1.0.4)
113
+ mini_mime (1.1.5)
114
+ minitest (5.24.1)
115
+ mutex_m (0.2.0)
116
+ net-imap (0.4.14)
117
+ date
118
+ net-protocol
119
+ net-pop (0.1.2)
120
+ net-protocol
121
+ net-protocol (0.2.2)
122
+ timeout
123
+ net-smtp (0.5.0)
124
+ net-protocol
125
+ nio4r (2.7.3)
126
+ nokogiri (1.16.6-arm64-darwin)
127
+ racc (~> 1.4)
128
+ parallel (1.25.1)
129
+ parser (3.3.4.0)
130
+ ast (~> 2.4.1)
131
+ racc
132
+ psych (5.1.2)
133
+ stringio
134
+ racc (1.8.0)
135
+ rack (3.1.7)
136
+ rack-session (2.0.0)
137
+ rack (>= 3.0.0)
138
+ rack-test (2.1.0)
139
+ rack (>= 1.3)
140
+ rackup (2.1.0)
141
+ rack (>= 3)
142
+ webrick (~> 1.8)
143
+ rails (7.1.3.2)
144
+ actioncable (= 7.1.3.2)
145
+ actionmailbox (= 7.1.3.2)
146
+ actionmailer (= 7.1.3.2)
147
+ actionpack (= 7.1.3.2)
148
+ actiontext (= 7.1.3.2)
149
+ actionview (= 7.1.3.2)
150
+ activejob (= 7.1.3.2)
151
+ activemodel (= 7.1.3.2)
152
+ activerecord (= 7.1.3.2)
153
+ activestorage (= 7.1.3.2)
154
+ activesupport (= 7.1.3.2)
155
+ bundler (>= 1.15.0)
156
+ railties (= 7.1.3.2)
157
+ rails-dom-testing (2.2.0)
158
+ activesupport (>= 5.0.0)
159
+ minitest
160
+ nokogiri (>= 1.6)
161
+ rails-html-sanitizer (1.6.0)
162
+ loofah (~> 2.21)
163
+ nokogiri (~> 1.14)
164
+ railties (7.1.3.2)
165
+ actionpack (= 7.1.3.2)
166
+ activesupport (= 7.1.3.2)
167
+ irb
168
+ rackup (>= 1.0.0)
169
+ rake (>= 12.2)
170
+ thor (~> 1.0, >= 1.2.2)
171
+ zeitwerk (~> 2.6)
172
+ rainbow (3.1.1)
173
+ rake (13.2.1)
174
+ rdoc (6.7.0)
175
+ psych (>= 4.0.0)
176
+ regexp_parser (2.9.2)
177
+ reline (0.5.9)
178
+ io-console (~> 0.5)
179
+ rexml (3.3.2)
180
+ strscan
181
+ rubocop (1.65.0)
182
+ json (~> 2.3)
183
+ language_server-protocol (>= 3.17.0)
184
+ parallel (~> 1.10)
185
+ parser (>= 3.3.0.2)
186
+ rainbow (>= 2.2.2, < 4.0)
187
+ regexp_parser (>= 2.4, < 3.0)
188
+ rexml (>= 3.2.5, < 4.0)
189
+ rubocop-ast (>= 1.31.1, < 2.0)
190
+ ruby-progressbar (~> 1.7)
191
+ unicode-display_width (>= 2.4.0, < 3.0)
192
+ rubocop-ast (1.31.3)
193
+ parser (>= 3.3.1.0)
194
+ rubocop-minitest (0.35.1)
195
+ rubocop (>= 1.61, < 2.0)
196
+ rubocop-ast (>= 1.31.1, < 2.0)
197
+ rubocop-performance (1.21.1)
198
+ rubocop (>= 1.48.1, < 2.0)
199
+ rubocop-ast (>= 1.31.1, < 2.0)
200
+ rubocop-rails (2.25.1)
201
+ activesupport (>= 4.2.0)
202
+ rack (>= 1.1)
203
+ rubocop (>= 1.33.0, < 2.0)
204
+ rubocop-ast (>= 1.31.1, < 2.0)
205
+ rubocop-rails-omakase (1.0.0)
206
+ rubocop
207
+ rubocop-minitest
208
+ rubocop-performance
209
+ rubocop-rails
210
+ ruby-progressbar (1.13.0)
211
+ stringio (3.1.1)
212
+ strscan (3.1.0)
213
+ thor (1.3.1)
214
+ timeout (0.4.1)
215
+ tzinfo (2.0.6)
216
+ concurrent-ruby (~> 1.0)
217
+ unicode-display_width (2.5.0)
218
+ webrick (1.8.1)
219
+ websocket-driver (0.7.6)
220
+ websocket-extensions (>= 0.1.0)
221
+ websocket-extensions (0.1.5)
222
+ zeitwerk (2.6.16)
223
+
224
+ PLATFORMS
225
+ arm64-darwin-22
226
+
227
+ DEPENDENCIES
228
+ arlequin!
229
+ rubocop-rails-omakase
230
+
231
+ BUNDLED WITH
232
+ 2.4.19
data/README.md ADDED
@@ -0,0 +1,77 @@
1
+ # Arlequin
2
+
3
+ **Arlequin** is a Ruby gem that helps detect and warn about N+1 SQL queries in Rails applications. It includes middleware that integrates seamlessly with your Rails application to improve performance by identifying inefficient database queries.
4
+
5
+ ## Features
6
+
7
+ - **N+1 Query Detection**: Automatically detects and warns about N+1 query problems.
8
+ - **Integration**: Easy integration with Rails applications through a Railtie.
9
+ - **Performance Insights**: Provides detailed insights into query performance issues.
10
+
11
+ ## Installation
12
+
13
+ Add this line to your application's Gemfile:
14
+
15
+ ```ruby
16
+ gem 'arlequin', group: [ :development ]
17
+ ```
18
+
19
+ Then execute:
20
+
21
+ ```bash
22
+ $ bundle install
23
+ ```
24
+
25
+ ## Usage
26
+
27
+ ### Basic Setup
28
+
29
+ To start using Arlequin, simply add the following to your Rails application’s configuration file (config/application.rb):
30
+
31
+ ```ruby
32
+ require 'arlequin'
33
+ ```
34
+
35
+ ### Middleware
36
+ Arlequin integrates with Rails as middleware. It will automatically start monitoring SQL queries for N+1 problems.
37
+ No additional setup is required beyond including it in your Gemfile and configuration.
38
+
39
+ ## Example
40
+
41
+ Suppose you have a Rails application with a Post model that has many Comments. If you inadvertently write code like:
42
+
43
+ ```ruby
44
+ @posts = Post.all
45
+ @posts.each do |post|
46
+ puts post.comments.count
47
+ end
48
+ ```
49
+
50
+ Arlequin will detect this N+1 query issue and warn you about it in the UI.
51
+
52
+ ## Development
53
+
54
+ To contribute to Arlequin, clone the repository and run the test suite:
55
+
56
+ ```bash
57
+ git clone https://github.com/dominicgoulet/arlequin.git
58
+ cd arlequin
59
+ bundle install
60
+ rake test
61
+ ```
62
+
63
+ Make sure to write tests for any new features or bug fixes you add.
64
+ Follow the existing coding style and conventions used in the project.
65
+
66
+ ## Contributing
67
+
68
+ We welcome contributions! Please submit pull requests and issues through GitHub.
69
+ Ensure your code adheres to the project’s style and includes appropriate tests.
70
+
71
+ ## License
72
+
73
+ Arlequin is released under the MIT License.
74
+
75
+ ## Contact
76
+
77
+ For any questions or feedback, feel free to reach out to us at [dominic@dominicgoulet.com].
data/Rakefile ADDED
@@ -0,0 +1,12 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "minitest/test_task"
4
+
5
+ Minitest::TestTask.create(:test) do |t|
6
+ t.libs << "test"
7
+ t.libs << "lib"
8
+ t.warning = false
9
+ t.test_globs = [ "test/**/*_test.rb" ]
10
+ end
11
+
12
+ task default: :test
data/arlequin.gemspec ADDED
@@ -0,0 +1,26 @@
1
+ # frozen_string_literal: true
2
+
3
+ Gem::Specification.new do |s|
4
+ s.name = "arlequin"
5
+ s.version = "0.1.2"
6
+ s.summary = "Arlequin performance logger gem"
7
+ s.description = "Performance Logger Gem"
8
+
9
+ s.license = "MIT"
10
+
11
+ s.author = "Dominic Goulet"
12
+ s.email = "dominic@dominicgoulet.com"
13
+ s.homepage = "https://github.com/dominicgoulet/arlequin"
14
+
15
+ # Specify which files should be added to the gem when it is released.
16
+ # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
17
+ s.files = Dir.chdir(File.expand_path(__dir__)) do
18
+ `git ls-files -z`.split("\x0").reject { |f| f.match(%r{\A(?:test|translation)/}) }
19
+ end
20
+
21
+ s.metadata = {
22
+ "source_code_uri" => s.homepage
23
+ }
24
+
25
+ s.add_dependency "rails", ">= 5.0"
26
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: arlequin
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dominic Goulet
@@ -25,17 +25,25 @@ dependencies:
25
25
  - !ruby/object:Gem::Version
26
26
  version: '5.0'
27
27
  description: Performance Logger Gem
28
- email: dominic.goulet@gmail.com
28
+ email: dominic@dominicgoulet.com
29
29
  executables: []
30
30
  extensions: []
31
31
  extra_rdoc_files: []
32
32
  files:
33
+ - ".gitignore"
34
+ - ".rubocop.yml"
35
+ - Gemfile
36
+ - Gemfile.lock
37
+ - README.md
38
+ - Rakefile
39
+ - arlequin.gemspec
33
40
  - lib/arlequin.rb
34
41
  - lib/arlequin/middleware.rb
35
42
  homepage: https://github.com/dominicgoulet/arlequin
36
43
  licenses:
37
44
  - MIT
38
- metadata: {}
45
+ metadata:
46
+ source_code_uri: https://github.com/dominicgoulet/arlequin
39
47
  post_install_message:
40
48
  rdoc_options: []
41
49
  require_paths: