n_one 1.0.0 → 1.0.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/.github/workflows/ci.yml +1 -1
- data/Gemfile.lock +5 -2
- data/README.md +13 -1
- data/lib/n_one/runner.rb +9 -2
- data/lib/n_one/version.rb +1 -1
- data/lib/n_one.rb +4 -4
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d037a52ad1770b38646937c04fdf274fac7dfdbf5d8351eb5208e0899d4d8927
|
4
|
+
data.tar.gz: eafb63f23fca359806b398c41480bad4225a46a1806dcbf05d50d88ca8fec197
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1e18c871f74065f1fac610a11a70717a6bd91caf447062627d91b847602300ac76abae5b7a5200d57dd65ad223f2da6fe6554ff7f0ae97df07710c609d9591e8
|
7
|
+
data.tar.gz: 4b933072d3e7e62f6abfac60ea794d64049457c756497614ce2f84eb77687d008786e901bdfb1139f5b47a5b49ed9acddafd7cf036e80a6e9620d977bee45a95
|
data/.github/workflows/ci.yml
CHANGED
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
n_one (1.0.
|
4
|
+
n_one (1.0.1)
|
5
5
|
pg_query
|
6
6
|
|
7
7
|
GEM
|
@@ -23,6 +23,8 @@ GEM
|
|
23
23
|
concurrent-ruby (1.1.8)
|
24
24
|
factory_bot (6.1.0)
|
25
25
|
activesupport (>= 5.0.0)
|
26
|
+
google-protobuf (3.19.1)
|
27
|
+
google-protobuf (3.19.1-x86_64-linux)
|
26
28
|
i18n (1.8.9)
|
27
29
|
concurrent-ruby (~> 1.0)
|
28
30
|
method_source (1.0.0)
|
@@ -30,7 +32,8 @@ GEM
|
|
30
32
|
parallel (1.20.1)
|
31
33
|
parser (3.0.1.0)
|
32
34
|
ast (~> 2.4.1)
|
33
|
-
pg_query (1.
|
35
|
+
pg_query (2.1.2)
|
36
|
+
google-protobuf (>= 3.17.1)
|
34
37
|
pry (0.14.0)
|
35
38
|
coderay (~> 1.1)
|
36
39
|
method_source (~> 1.0)
|
data/README.md
CHANGED
@@ -74,11 +74,23 @@ end
|
|
74
74
|
Ignore notifications for call stacks containing one or more substrings:
|
75
75
|
|
76
76
|
```ruby
|
77
|
-
NOne.scan!(whitelist: 'myapp/lib/known_n_plus_ones/') do
|
77
|
+
NOne.scan!(whitelist: ['myapp/lib/known_n_plus_ones/']) do
|
78
78
|
example.run
|
79
79
|
end
|
80
80
|
```
|
81
81
|
|
82
|
+
## Ignore names
|
83
|
+
|
84
|
+
Ignore queries with names:
|
85
|
+
|
86
|
+
```ruby
|
87
|
+
NOne.scan!(ignore_names: ['SCHEMA']) do
|
88
|
+
example.run
|
89
|
+
end
|
90
|
+
```
|
91
|
+
|
92
|
+
It will skip schema queries(e.g. for column names of a given table)
|
93
|
+
|
82
94
|
## Contributing
|
83
95
|
|
84
96
|
Bug reports and pull requests are welcome on GitHub at https://github.com/prikha/n_one.
|
data/lib/n_one/runner.rb
CHANGED
@@ -2,8 +2,14 @@
|
|
2
2
|
|
3
3
|
module NOne
|
4
4
|
class Runner # :nodoc:
|
5
|
-
|
5
|
+
# Instantiation
|
6
|
+
#
|
7
|
+
# @param whitelist [<String>] frame substrings to be ignored
|
8
|
+
# @param ignore_names [<String>] query names to be ignored
|
9
|
+
#
|
10
|
+
def initialize(whitelist: [], ignore_names: [])
|
6
11
|
@whitelist = ['active_record/validations/uniqueness'] + whitelist
|
12
|
+
@ignore_names = ignore_names
|
7
13
|
end
|
8
14
|
|
9
15
|
def scan(&block)
|
@@ -20,7 +26,7 @@ module NOne
|
|
20
26
|
|
21
27
|
private
|
22
28
|
|
23
|
-
attr_reader :store, :whitelist
|
29
|
+
attr_reader :store, :whitelist, :ignore_names
|
24
30
|
|
25
31
|
def init_store
|
26
32
|
@store = {}
|
@@ -51,6 +57,7 @@ module NOne
|
|
51
57
|
cached = data[:cached]
|
52
58
|
|
53
59
|
next if !sql.include?('SELECT') || cached
|
60
|
+
next if ignore_names.include?(data[:name])
|
54
61
|
|
55
62
|
sql_fingerprint = Query.fingerprint(sql)
|
56
63
|
next unless sql_fingerprint
|
data/lib/n_one/version.rb
CHANGED
data/lib/n_one.rb
CHANGED
@@ -30,11 +30,11 @@ module NOne
|
|
30
30
|
|
31
31
|
module_function
|
32
32
|
|
33
|
-
def scan(
|
34
|
-
Runner.new(
|
33
|
+
def scan(**args, &block)
|
34
|
+
Runner.new(**args).scan(&block)
|
35
35
|
end
|
36
36
|
|
37
|
-
def scan!(
|
38
|
-
Runner.new(
|
37
|
+
def scan!(**args, &block)
|
38
|
+
Runner.new(**args).scan!(&block)
|
39
39
|
end
|
40
40
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: n_one
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sergey Prikhodko
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-
|
11
|
+
date: 2021-12-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: pg_query
|
@@ -66,7 +66,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
66
66
|
- !ruby/object:Gem::Version
|
67
67
|
version: '0'
|
68
68
|
requirements: []
|
69
|
-
rubygems_version: 3.1
|
69
|
+
rubygems_version: 3.0.3.1
|
70
70
|
signing_key:
|
71
71
|
specification_version: 4
|
72
72
|
summary: N+1 auto-detection for ActiveRecord and PostgreSQL
|