lograge-sql 0.4.0 → 1.3.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/README.md +12 -2
- data/lib/lograge/active_record_log_subscriber.rb +16 -0
- data/lib/lograge/sql.rb +18 -0
- data/lib/lograge/sql/extension.rb +4 -23
- data/lib/lograge/sql/railtie.rb +2 -2
- data/lib/lograge/sql/version.rb +1 -1
- metadata +10 -75
- data/.gitignore +0 -11
- data/.rspec +0 -2
- data/.rubocop.yml +0 -20
- data/.travis.yml +0 -23
- data/Gemfile +0 -6
- data/bin/console +0 -15
- data/bin/setup +0 -8
- data/gemfiles/lograge10.gemfile +0 -7
- data/gemfiles/lograge11.gemfile +0 -7
- data/lograge-sql.gemspec +0 -31
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c5983447366cf1c996e3f4a6571646b4d54298df7e8c54417c02537c23b5132f
|
4
|
+
data.tar.gz: 48b16b073f9681e809eb3d1bcf3bb0f661ca2ae80a2a2958ef1d9ce495a1147e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1d53aade24130437f98e9bd7d06c448be1364cff17c6dc18c44da939723145a938246c15407fdb8644447d2be31824d34f52cafc0260dc3528b4674cf1a888b9
|
7
|
+
data.tar.gz: 9a8b3bbaa5abd569373b97ffbda2f1c8b2493be8c35695935587ae7726ac7af35adeb99caa01e2a03e753e26777d077c8f561fed1fa7d357568771094dcd4928
|
data/README.md
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
# Lograge::Sql
|
2
2
|
|
3
|
-
[](https://badge.fury.io/rb/lograge-sql)
|
3
|
+
[](https://badge.fury.io/rb/lograge-sql)
|
4
|
+
[](https://travis-ci.org/iMacTia/lograge-sql)
|
4
5
|
|
5
6
|
Lograge::Sql is an extension to the famous [Lograge](https://github.com/roidrage/lograge) gem, which adds SQL queries to the Lograge Event and disable default ActiveRecord logging.
|
6
7
|
This is extremely useful if you're using Lograge together with the ELK stack.
|
@@ -22,6 +23,12 @@ In order to enable SQL logging in your application, you'll simply need to add th
|
|
22
23
|
require 'lograge/sql/extension'
|
23
24
|
```
|
24
25
|
|
26
|
+
By default, Lograge::Sql disables default logging on ActiveRecord. To preserve default logging, add this to your lograge initializer:
|
27
|
+
|
28
|
+
```ruby
|
29
|
+
config.lograge_sql.keep_default_active_record_log = true
|
30
|
+
```
|
31
|
+
|
25
32
|
## Customization
|
26
33
|
|
27
34
|
By default, the format is a string concatenation of the query name, the query duration and the query itself joined by `\n` newline:
|
@@ -32,7 +39,7 @@ Object Load (0.42) SELECT "objects.*" FROM "objects"
|
|
32
39
|
Associations Load (0.42) SELECT "associations.*" FROM "associations" WHERE "associations"."object_id" = "$1"
|
33
40
|
```
|
34
41
|
|
35
|
-
However, having `Lograge::Formatters::Json.new`, the relevant output is
|
42
|
+
However, having `Lograge::Formatters::Json.new`, the relevant output is
|
36
43
|
|
37
44
|
```json
|
38
45
|
{
|
@@ -59,6 +66,9 @@ Rails.application.configure do
|
|
59
66
|
end
|
60
67
|
```
|
61
68
|
|
69
|
+
#### Thread-safety
|
70
|
+
|
71
|
+
[Depending on the web server in your project](https://github.com/steveklabnik/request_store#the-problem) you might benefit from improved thread-safety by adding [`request_store`](https://github.com/steveklabnik/request_store) to your Gemfile. It will be automatically picked up by `lograge-sql`.
|
62
72
|
|
63
73
|
## Contributing
|
64
74
|
|
@@ -0,0 +1,16 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Lograge
|
4
|
+
# Log subscriber to replace ActiveRecord's default one
|
5
|
+
class ActiveRecordLogSubscriber < ActiveSupport::LogSubscriber
|
6
|
+
# Every time there's an SQL query, stores it into the Thread.
|
7
|
+
# They'll later be access from the RequestLogSubscriber.
|
8
|
+
def sql(event)
|
9
|
+
ActiveRecord::LogSubscriber.runtime += event.duration
|
10
|
+
return if event.payload[:name] == 'SCHEMA'
|
11
|
+
|
12
|
+
Lograge::Sql.store[:lograge_sql_queries] ||= []
|
13
|
+
Lograge::Sql.store[:lograge_sql_queries] << Lograge::Sql.extract_event.call(event)
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
data/lib/lograge/sql.rb
CHANGED
@@ -2,6 +2,7 @@
|
|
2
2
|
|
3
3
|
require 'lograge/sql/version'
|
4
4
|
|
5
|
+
# Main Lograge module
|
5
6
|
module Lograge
|
6
7
|
# Main gem module
|
7
8
|
module Sql
|
@@ -15,6 +16,23 @@ module Lograge
|
|
15
16
|
def setup(config)
|
16
17
|
Lograge::Sql.formatter = config.formatter || default_formatter
|
17
18
|
Lograge::Sql.extract_event = config.extract_event || default_extract_event
|
19
|
+
|
20
|
+
# Disable existing ActiveRecord logging
|
21
|
+
unless config.keep_default_active_record_log
|
22
|
+
ActiveSupport::LogSubscriber.log_subscribers.each do |subscriber|
|
23
|
+
Lograge.unsubscribe(:active_record, subscriber) if subscriber.is_a?(ActiveRecord::LogSubscriber)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
return unless defined?(Lograge::ActiveRecordLogSubscriber)
|
28
|
+
|
29
|
+
Lograge::ActiveRecordLogSubscriber.attach_to(:active_record)
|
30
|
+
end
|
31
|
+
|
32
|
+
# Gets the store, preferring RequestStore if the gem is found.
|
33
|
+
# @return [Hash, Thread] the RequestStore or the current Thread.
|
34
|
+
def store
|
35
|
+
defined?(RequestStore) ? RequestStore.store : Thread.current
|
18
36
|
end
|
19
37
|
|
20
38
|
private
|
@@ -1,5 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
require 'lograge/active_record_log_subscriber'
|
4
|
+
|
3
5
|
module Lograge
|
4
6
|
module Sql
|
5
7
|
# Module used to extend Lograge
|
@@ -11,10 +13,10 @@ module Lograge
|
|
11
13
|
|
12
14
|
# Collects all SQL queries stored in the Thread during request processing
|
13
15
|
def extract_sql_queries
|
14
|
-
sql_queries =
|
16
|
+
sql_queries = Lograge::Sql.store[:lograge_sql_queries]
|
15
17
|
return {} unless sql_queries
|
16
18
|
|
17
|
-
|
19
|
+
Lograge::Sql.store[:lograge_sql_queries] = nil
|
18
20
|
{
|
19
21
|
sql_queries: Lograge::Sql.formatter.call(sql_queries),
|
20
22
|
sql_queries_count: sql_queries.length
|
@@ -24,29 +26,8 @@ module Lograge
|
|
24
26
|
end
|
25
27
|
end
|
26
28
|
|
27
|
-
module Lograge
|
28
|
-
# Log subscriber to replace ActiveRecord's default one
|
29
|
-
class ActiveRecordLogSubscriber < ActiveSupport::LogSubscriber
|
30
|
-
# Every time there's an SQL query, stores it into the Thread.
|
31
|
-
# They'll later be access from the RequestLogSubscriber.
|
32
|
-
def sql(event)
|
33
|
-
ActiveRecord::LogSubscriber.runtime += event.duration
|
34
|
-
return if event.payload[:name] == 'SCHEMA'
|
35
|
-
|
36
|
-
Thread.current[:lograge_sql_queries] ||= []
|
37
|
-
Thread.current[:lograge_sql_queries] << Lograge::Sql.extract_event.call(event)
|
38
|
-
end
|
39
|
-
end
|
40
|
-
end
|
41
|
-
|
42
29
|
if defined?(Lograge::RequestLogSubscriber)
|
43
30
|
Lograge::RequestLogSubscriber.prepend Lograge::Sql::Extension
|
44
31
|
else
|
45
32
|
Lograge::LogSubscribers::ActionController.prepend Lograge::Sql::Extension
|
46
33
|
end
|
47
|
-
|
48
|
-
ActiveSupport::LogSubscriber.log_subscribers.each do |subscriber|
|
49
|
-
Lograge.unsubscribe(:active_record, subscriber) if subscriber.is_a?(ActiveRecord::LogSubscriber)
|
50
|
-
end
|
51
|
-
|
52
|
-
Lograge::ActiveRecordLogSubscriber.attach_to :active_record
|
data/lib/lograge/sql/railtie.rb
CHANGED
@@ -10,8 +10,8 @@ module Lograge
|
|
10
10
|
# To ensure that configuration is not nil when initialise Lograge::Sql.setup
|
11
11
|
config.lograge_sql = ActiveSupport::OrderedOptions.new
|
12
12
|
|
13
|
-
config.
|
14
|
-
Lograge::Sql.setup(
|
13
|
+
config.to_prepare do
|
14
|
+
Lograge::Sql.setup(Rails.application.config.lograge_sql)
|
15
15
|
end
|
16
16
|
end
|
17
17
|
end
|
data/lib/lograge/sql/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: lograge-sql
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 1.3.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Mattia Giuffrida
|
8
8
|
autorequire:
|
9
|
-
bindir:
|
9
|
+
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2020-11-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activerecord
|
@@ -19,7 +19,7 @@ dependencies:
|
|
19
19
|
version: '4'
|
20
20
|
- - "<"
|
21
21
|
- !ruby/object:Gem::Version
|
22
|
-
version: '
|
22
|
+
version: '7.0'
|
23
23
|
type: :runtime
|
24
24
|
prerelease: false
|
25
25
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -29,7 +29,7 @@ dependencies:
|
|
29
29
|
version: '4'
|
30
30
|
- - "<"
|
31
31
|
- !ruby/object:Gem::Version
|
32
|
-
version: '
|
32
|
+
version: '7.0'
|
33
33
|
- !ruby/object:Gem::Dependency
|
34
34
|
name: lograge
|
35
35
|
requirement: !ruby/object:Gem::Requirement
|
@@ -44,76 +44,20 @@ dependencies:
|
|
44
44
|
- - "~>"
|
45
45
|
- !ruby/object:Gem::Version
|
46
46
|
version: '0.4'
|
47
|
-
- !ruby/object:Gem::Dependency
|
48
|
-
name: bundler
|
49
|
-
requirement: !ruby/object:Gem::Requirement
|
50
|
-
requirements:
|
51
|
-
- - "~>"
|
52
|
-
- !ruby/object:Gem::Version
|
53
|
-
version: '1.0'
|
54
|
-
type: :development
|
55
|
-
prerelease: false
|
56
|
-
version_requirements: !ruby/object:Gem::Requirement
|
57
|
-
requirements:
|
58
|
-
- - "~>"
|
59
|
-
- !ruby/object:Gem::Version
|
60
|
-
version: '1.0'
|
61
47
|
- !ruby/object:Gem::Dependency
|
62
48
|
name: rake
|
63
49
|
requirement: !ruby/object:Gem::Requirement
|
64
|
-
requirements:
|
65
|
-
- - "~>"
|
66
|
-
- !ruby/object:Gem::Version
|
67
|
-
version: '10.0'
|
68
|
-
type: :development
|
69
|
-
prerelease: false
|
70
|
-
version_requirements: !ruby/object:Gem::Requirement
|
71
|
-
requirements:
|
72
|
-
- - "~>"
|
73
|
-
- !ruby/object:Gem::Version
|
74
|
-
version: '10.0'
|
75
|
-
- !ruby/object:Gem::Dependency
|
76
|
-
name: rspec
|
77
|
-
requirement: !ruby/object:Gem::Requirement
|
78
|
-
requirements:
|
79
|
-
- - "~>"
|
80
|
-
- !ruby/object:Gem::Version
|
81
|
-
version: '3.0'
|
82
|
-
type: :development
|
83
|
-
prerelease: false
|
84
|
-
version_requirements: !ruby/object:Gem::Requirement
|
85
|
-
requirements:
|
86
|
-
- - "~>"
|
87
|
-
- !ruby/object:Gem::Version
|
88
|
-
version: '3.0'
|
89
|
-
- !ruby/object:Gem::Dependency
|
90
|
-
name: rubocop
|
91
|
-
requirement: !ruby/object:Gem::Requirement
|
92
|
-
requirements:
|
93
|
-
- - ">="
|
94
|
-
- !ruby/object:Gem::Version
|
95
|
-
version: '0'
|
96
|
-
type: :development
|
97
|
-
prerelease: false
|
98
|
-
version_requirements: !ruby/object:Gem::Requirement
|
99
50
|
requirements:
|
100
51
|
- - ">="
|
101
52
|
- !ruby/object:Gem::Version
|
102
|
-
version:
|
103
|
-
- !ruby/object:Gem::Dependency
|
104
|
-
name: rubocop-performance
|
105
|
-
requirement: !ruby/object:Gem::Requirement
|
106
|
-
requirements:
|
107
|
-
- - ">="
|
108
|
-
- !ruby/object:Gem::Version
|
109
|
-
version: '0'
|
53
|
+
version: 12.3.3
|
110
54
|
type: :development
|
111
55
|
prerelease: false
|
112
56
|
version_requirements: !ruby/object:Gem::Requirement
|
113
57
|
requirements:
|
114
58
|
- - ">="
|
115
59
|
- !ruby/object:Gem::Version
|
116
|
-
version:
|
60
|
+
version: 12.3.3
|
117
61
|
description: An extension for Lograge to log SQL queries
|
118
62
|
email:
|
119
63
|
- giuffrida.mattia@gmail.com
|
@@ -121,22 +65,13 @@ executables: []
|
|
121
65
|
extensions: []
|
122
66
|
extra_rdoc_files: []
|
123
67
|
files:
|
124
|
-
- ".gitignore"
|
125
|
-
- ".rspec"
|
126
|
-
- ".rubocop.yml"
|
127
|
-
- ".travis.yml"
|
128
|
-
- Gemfile
|
129
68
|
- README.md
|
130
69
|
- Rakefile
|
131
|
-
-
|
132
|
-
- bin/setup
|
133
|
-
- gemfiles/lograge10.gemfile
|
134
|
-
- gemfiles/lograge11.gemfile
|
70
|
+
- lib/lograge/active_record_log_subscriber.rb
|
135
71
|
- lib/lograge/sql.rb
|
136
72
|
- lib/lograge/sql/extension.rb
|
137
73
|
- lib/lograge/sql/railtie.rb
|
138
74
|
- lib/lograge/sql/version.rb
|
139
|
-
- lograge-sql.gemspec
|
140
75
|
homepage: https://github.com/iMacTia/lograge-sql
|
141
76
|
licenses:
|
142
77
|
- MIT
|
@@ -149,14 +84,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
149
84
|
requirements:
|
150
85
|
- - ">="
|
151
86
|
- !ruby/object:Gem::Version
|
152
|
-
version:
|
87
|
+
version: 2.4.0
|
153
88
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
154
89
|
requirements:
|
155
90
|
- - ">="
|
156
91
|
- !ruby/object:Gem::Version
|
157
92
|
version: '0'
|
158
93
|
requirements: []
|
159
|
-
rubygems_version: 3.
|
94
|
+
rubygems_version: 3.1.4
|
160
95
|
signing_key:
|
161
96
|
specification_version: 4
|
162
97
|
summary: An extension for Lograge to log SQL queries
|
data/.gitignore
DELETED
data/.rspec
DELETED
data/.rubocop.yml
DELETED
@@ -1,20 +0,0 @@
|
|
1
|
-
require:
|
2
|
-
- rubocop-performance
|
3
|
-
|
4
|
-
AllCops:
|
5
|
-
DisplayCopNames: true
|
6
|
-
DisplayStyleGuide: true
|
7
|
-
TargetRubyVersion: 2.3
|
8
|
-
|
9
|
-
Metrics/BlockLength:
|
10
|
-
Exclude:
|
11
|
-
- spec/**/*.rb
|
12
|
-
|
13
|
-
Metrics/LineLength:
|
14
|
-
Max: 120
|
15
|
-
Exclude:
|
16
|
-
- spec/**/*.rb
|
17
|
-
|
18
|
-
Style/Documentation:
|
19
|
-
Exclude:
|
20
|
-
- 'spec/**/*'
|
data/.travis.yml
DELETED
@@ -1,23 +0,0 @@
|
|
1
|
-
language: ruby
|
2
|
-
cache: bundler
|
3
|
-
rvm:
|
4
|
-
- 2.3
|
5
|
-
- 2.4
|
6
|
-
- 2.5
|
7
|
-
- 2.6
|
8
|
-
before_install:
|
9
|
-
- gem uninstall -v '>= 2' -i $(rvm gemdir)@global -ax bundler || true
|
10
|
-
- gem install bundler -v '~> 1.17'
|
11
|
-
gemfile:
|
12
|
-
- gemfiles/lograge10.gemfile
|
13
|
-
- gemfiles/lograge11.gemfile
|
14
|
-
deploy:
|
15
|
-
provider: rubygems
|
16
|
-
api_key:
|
17
|
-
secure: xlc4BM+5ljo4cO2FC71KbhbVGVYd3NMxhZPat/Y37vo6b5/I01D+Z+K84azMvhIZa+O17cA56FGqT6P0XYfcjZVnYzixpyRlbffKBGNPcIFj2UklWk2BDOojezHPEQnbR2f0jE2+8jHtAb9qyoBTbTlvsW3+svd76+53TxMW1PgGF9+1xdtlEumF1q+IYRL+5TzDLk9GyQ+3RmVd9KBVvQIxxUpn4COJohmQWnv98ZzluX4I/QUt3k4o+etUINPewyg3S+VNP0u+K9HGkY3TL8OpUbCS3Syr3OydwzgpXIBlW+kWVez5/qZn3pd6oSpNEUF9Mh3NhaVsDacFSh6XgGNgww+isazyAROsledK2GsEOH0Hi6gpia/Ny5cD5TFAiGshMcUIb2K4roI3AW9kJ2e59hoC+QvPy64IybO/dhaKcxwX8F4qq3Fk/8EzQV5eOTq0Iai5aYNJaGZUqHV/X4DiMwDk/JoyQVYE+2CMF/PlZIFV4LuegDArVXYh5w3Qo9vYDfNp7Hfv0w5XgpEqAhk+Dabl+BlVhzSM/Cf28i6OVAhLURnGMNKhQEi3/4EusaM/cOQlM5QKWweAPfOwDKMFUoj9+Rtr0FfSyNzerG9dlGuzEKOlqq+XuOQ7RfDUV4+bn2PwbYo5XwMKz1Y8FWUZTz6l14miaw8Yq7U0GU8=
|
18
|
-
gem: lograge-sql
|
19
|
-
on:
|
20
|
-
tags: true
|
21
|
-
repo: iMacTia/lograge-sql
|
22
|
-
rvm: 2.6
|
23
|
-
|
data/Gemfile
DELETED
data/bin/console
DELETED
@@ -1,15 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
# frozen_string_literal: true
|
3
|
-
|
4
|
-
require 'bundler/setup'
|
5
|
-
require 'lograge/sql'
|
6
|
-
|
7
|
-
# You can add fixtures and/or initialization code here to make experimenting
|
8
|
-
# with your gem easier. You can also use a different console, if you like.
|
9
|
-
|
10
|
-
# (If you use this, don't forget to add pry to your Gemfile!)
|
11
|
-
# require "pry"
|
12
|
-
# Pry.start
|
13
|
-
|
14
|
-
require 'irb'
|
15
|
-
IRB.start
|
data/bin/setup
DELETED
data/gemfiles/lograge10.gemfile
DELETED
data/gemfiles/lograge11.gemfile
DELETED
data/lograge-sql.gemspec
DELETED
@@ -1,31 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
lib = File.expand_path('lib', __dir__)
|
4
|
-
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
5
|
-
require 'lograge/sql/version'
|
6
|
-
|
7
|
-
Gem::Specification.new do |spec|
|
8
|
-
spec.name = 'lograge-sql'
|
9
|
-
spec.version = Lograge::Sql::VERSION
|
10
|
-
spec.authors = ['Mattia Giuffrida']
|
11
|
-
spec.email = ['giuffrida.mattia@gmail.com']
|
12
|
-
|
13
|
-
spec.summary = 'An extension for Lograge to log SQL queries'
|
14
|
-
spec.description = 'An extension for Lograge to log SQL queries'
|
15
|
-
spec.homepage = 'https://github.com/iMacTia/lograge-sql'
|
16
|
-
spec.license = 'MIT'
|
17
|
-
|
18
|
-
spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
|
19
|
-
spec.bindir = 'exe'
|
20
|
-
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
21
|
-
spec.require_paths = ['lib']
|
22
|
-
|
23
|
-
spec.add_runtime_dependency 'activerecord', '>= 4', '< 6.0'
|
24
|
-
spec.add_runtime_dependency 'lograge', '~> 0.4'
|
25
|
-
|
26
|
-
spec.add_development_dependency 'bundler', '~> 1.0'
|
27
|
-
spec.add_development_dependency 'rake', '~> 10.0'
|
28
|
-
spec.add_development_dependency 'rspec', '~> 3.0'
|
29
|
-
spec.add_development_dependency 'rubocop'
|
30
|
-
spec.add_development_dependency 'rubocop-performance'
|
31
|
-
end
|