lograge-sql 0.3.0 → 1.3.0
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/Rakefile +3 -1
- data/lib/lograge/sql.rb +22 -7
- data/lib/lograge/sql/extension.rb +17 -10
- data/lib/lograge/sql/railtie.rb +6 -3
- data/lib/lograge/sql/version.rb +4 -1
- metadata +15 -51
- data/.gitignore +0 -11
- data/.rspec +0 -2
- data/.travis.yml +0 -14
- data/Gemfile +0 -4
- data/bin/console +0 -14
- data/bin/setup +0 -8
- data/lograge-sql.gemspec +0 -28
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2a1b24c2960cc4eecd3b3ca23807587a396e8b483c76e916b8f2a50b600babe2
|
4
|
+
data.tar.gz: 5e33f26703504065a0838c5bb97f9bb45705a7ffce6317d2d239f46967b9fe79
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ee641c7c4988772cf1db3fb37639072e53c4cbe2a6a0b2823637e54f39a5ecba62ab1a52017f0a9418c61091af7419116ff36273f8363813090a45f65bea3a13
|
7
|
+
data.tar.gz: 176fd786ad019f0cf125bbe9a77acbce82722d43f6df0421eeeb0d9b719116e2d0aa68f8a8589e5ddcbc76d32bba183c7bb6d0342ffda993d4719d8d703af7d5
|
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
|
|
data/Rakefile
CHANGED
data/lib/lograge/sql.rb
CHANGED
@@ -1,10 +1,12 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'lograge/sql/version'
|
2
4
|
|
5
|
+
# Main Lograge module
|
3
6
|
module Lograge
|
7
|
+
# Main gem module
|
4
8
|
module Sql
|
5
|
-
|
6
9
|
class << self
|
7
|
-
|
8
10
|
# Format SQL log
|
9
11
|
attr_accessor :formatter
|
10
12
|
# Extract information from SQL event
|
@@ -14,27 +16,40 @@ module Lograge
|
|
14
16
|
def setup(config)
|
15
17
|
Lograge::Sql.formatter = config.formatter || default_formatter
|
16
18
|
Lograge::Sql.extract_event = config.extract_event || default_extract_event
|
19
|
+
|
20
|
+
return if config.keep_default_active_record_log
|
21
|
+
|
22
|
+
# Disable existing ActiveRecord logging
|
23
|
+
ActiveSupport::LogSubscriber.log_subscribers.each do |subscriber|
|
24
|
+
Lograge.unsubscribe(:active_record, subscriber) if subscriber.is_a?(ActiveRecord::LogSubscriber)
|
25
|
+
end
|
26
|
+
|
27
|
+
Lograge::ActiveRecordLogSubscriber.attach_to :active_record
|
28
|
+
end
|
29
|
+
|
30
|
+
# Gets the store, preferring RequestStore if the gem is found.
|
31
|
+
# @return [Hash, Thread] the RequestStore or the current Thread.
|
32
|
+
def store
|
33
|
+
defined?(RequestStore) ? RequestStore.store : Thread.current
|
17
34
|
end
|
18
35
|
|
19
36
|
private
|
20
37
|
|
21
38
|
# By default, the output is a concatenated string of all extracted events
|
22
39
|
def default_formatter
|
23
|
-
|
40
|
+
proc do |sql_queries|
|
24
41
|
%('#{sql_queries.join("\n")}')
|
25
42
|
end
|
26
43
|
end
|
27
44
|
|
28
|
-
# By default, only extract values required for the default_formatter and
|
45
|
+
# By default, only extract values required for the default_formatter and
|
29
46
|
# already convert to a string
|
30
47
|
def default_extract_event
|
31
|
-
|
48
|
+
proc do |event|
|
32
49
|
"#{event.payload[:name]} (#{event.duration.to_f.round(2)}) #{event.payload[:sql]}"
|
33
50
|
end
|
34
51
|
end
|
35
|
-
|
36
52
|
end
|
37
|
-
|
38
53
|
end
|
39
54
|
end
|
40
55
|
|
@@ -1,15 +1,20 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module Lograge
|
2
4
|
module Sql
|
5
|
+
# Module used to extend Lograge
|
3
6
|
module Extension
|
7
|
+
# Overrides `Lograge::RequestLogSubscriber#extract_request` do add SQL queries
|
4
8
|
def extract_request(event, payload)
|
5
9
|
super.merge!(extract_sql_queries)
|
6
10
|
end
|
7
11
|
|
12
|
+
# Collects all SQL queries stored in the Thread during request processing
|
8
13
|
def extract_sql_queries
|
9
|
-
sql_queries =
|
14
|
+
sql_queries = Lograge::Sql.store[:lograge_sql_queries]
|
10
15
|
return {} unless sql_queries
|
11
16
|
|
12
|
-
|
17
|
+
Lograge::Sql.store[:lograge_sql_queries] = nil
|
13
18
|
{
|
14
19
|
sql_queries: Lograge::Sql.formatter.call(sql_queries),
|
15
20
|
sql_queries_count: sql_queries.length
|
@@ -20,20 +25,22 @@ module Lograge
|
|
20
25
|
end
|
21
26
|
|
22
27
|
module Lograge
|
28
|
+
# Log subscriber to replace ActiveRecord's default one
|
23
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.
|
24
32
|
def sql(event)
|
25
33
|
ActiveRecord::LogSubscriber.runtime += event.duration
|
26
34
|
return if event.payload[:name] == 'SCHEMA'
|
27
|
-
|
28
|
-
|
35
|
+
|
36
|
+
Lograge::Sql.store[:lograge_sql_queries] ||= []
|
37
|
+
Lograge::Sql.store[:lograge_sql_queries] << Lograge::Sql.extract_event.call(event)
|
29
38
|
end
|
30
39
|
end
|
31
40
|
end
|
32
41
|
|
33
|
-
Lograge::RequestLogSubscriber
|
34
|
-
|
35
|
-
|
36
|
-
Lograge.
|
42
|
+
if defined?(Lograge::RequestLogSubscriber)
|
43
|
+
Lograge::RequestLogSubscriber.prepend Lograge::Sql::Extension
|
44
|
+
else
|
45
|
+
Lograge::LogSubscribers::ActionController.prepend Lograge::Sql::Extension
|
37
46
|
end
|
38
|
-
|
39
|
-
Lograge::ActiveRecordLogSubscriber.attach_to :active_record
|
data/lib/lograge/sql/railtie.rb
CHANGED
@@ -1,15 +1,18 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'rails/railtie'
|
2
4
|
require 'active_support/ordered_options'
|
3
5
|
|
4
6
|
module Lograge
|
5
7
|
module Sql
|
8
|
+
# Railtie to automatically setup in Rails
|
6
9
|
class Railtie < Rails::Railtie
|
7
10
|
# To ensure that configuration is not nil when initialise Lograge::Sql.setup
|
8
11
|
config.lograge_sql = ActiveSupport::OrderedOptions.new
|
9
12
|
|
10
|
-
config.
|
11
|
-
Lograge::Sql.setup(
|
13
|
+
config.to_prepare do
|
14
|
+
Lograge::Sql.setup(Rails.application.config.lograge_sql)
|
12
15
|
end
|
13
16
|
end
|
14
17
|
end
|
15
|
-
end
|
18
|
+
end
|
data/lib/lograge/sql/version.rb
CHANGED
metadata
CHANGED
@@ -1,29 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: lograge-sql
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 1.3.0
|
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-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
|
-
- !ruby/object:Gem::Dependency
|
14
|
-
name: lograge
|
15
|
-
requirement: !ruby/object:Gem::Requirement
|
16
|
-
requirements:
|
17
|
-
- - "~>"
|
18
|
-
- !ruby/object:Gem::Version
|
19
|
-
version: '0.4'
|
20
|
-
type: :runtime
|
21
|
-
prerelease: false
|
22
|
-
version_requirements: !ruby/object:Gem::Requirement
|
23
|
-
requirements:
|
24
|
-
- - "~>"
|
25
|
-
- !ruby/object:Gem::Version
|
26
|
-
version: '0.4'
|
27
13
|
- !ruby/object:Gem::Dependency
|
28
14
|
name: activerecord
|
29
15
|
requirement: !ruby/object:Gem::Requirement
|
@@ -33,7 +19,7 @@ dependencies:
|
|
33
19
|
version: '4'
|
34
20
|
- - "<"
|
35
21
|
- !ruby/object:Gem::Version
|
36
|
-
version: '
|
22
|
+
version: '7.0'
|
37
23
|
type: :runtime
|
38
24
|
prerelease: false
|
39
25
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -43,49 +29,35 @@ dependencies:
|
|
43
29
|
version: '4'
|
44
30
|
- - "<"
|
45
31
|
- !ruby/object:Gem::Version
|
46
|
-
version: '
|
32
|
+
version: '7.0'
|
47
33
|
- !ruby/object:Gem::Dependency
|
48
|
-
name:
|
34
|
+
name: lograge
|
49
35
|
requirement: !ruby/object:Gem::Requirement
|
50
36
|
requirements:
|
51
37
|
- - "~>"
|
52
38
|
- !ruby/object:Gem::Version
|
53
|
-
version: '
|
54
|
-
type: :
|
39
|
+
version: '0.4'
|
40
|
+
type: :runtime
|
55
41
|
prerelease: false
|
56
42
|
version_requirements: !ruby/object:Gem::Requirement
|
57
43
|
requirements:
|
58
44
|
- - "~>"
|
59
45
|
- !ruby/object:Gem::Version
|
60
|
-
version: '
|
46
|
+
version: '0.4'
|
61
47
|
- !ruby/object:Gem::Dependency
|
62
48
|
name: rake
|
63
49
|
requirement: !ruby/object:Gem::Requirement
|
64
50
|
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
|
-
- - "~>"
|
51
|
+
- - ">="
|
80
52
|
- !ruby/object:Gem::Version
|
81
|
-
version:
|
53
|
+
version: 12.3.3
|
82
54
|
type: :development
|
83
55
|
prerelease: false
|
84
56
|
version_requirements: !ruby/object:Gem::Requirement
|
85
57
|
requirements:
|
86
|
-
- - "
|
58
|
+
- - ">="
|
87
59
|
- !ruby/object:Gem::Version
|
88
|
-
version:
|
60
|
+
version: 12.3.3
|
89
61
|
description: An extension for Lograge to log SQL queries
|
90
62
|
email:
|
91
63
|
- giuffrida.mattia@gmail.com
|
@@ -93,19 +65,12 @@ executables: []
|
|
93
65
|
extensions: []
|
94
66
|
extra_rdoc_files: []
|
95
67
|
files:
|
96
|
-
- ".gitignore"
|
97
|
-
- ".rspec"
|
98
|
-
- ".travis.yml"
|
99
|
-
- Gemfile
|
100
68
|
- README.md
|
101
69
|
- Rakefile
|
102
|
-
- bin/console
|
103
|
-
- bin/setup
|
104
70
|
- lib/lograge/sql.rb
|
105
71
|
- lib/lograge/sql/extension.rb
|
106
72
|
- lib/lograge/sql/railtie.rb
|
107
73
|
- lib/lograge/sql/version.rb
|
108
|
-
- lograge-sql.gemspec
|
109
74
|
homepage: https://github.com/iMacTia/lograge-sql
|
110
75
|
licenses:
|
111
76
|
- MIT
|
@@ -118,15 +83,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
118
83
|
requirements:
|
119
84
|
- - ">="
|
120
85
|
- !ruby/object:Gem::Version
|
121
|
-
version:
|
86
|
+
version: 2.4.0
|
122
87
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
123
88
|
requirements:
|
124
89
|
- - ">="
|
125
90
|
- !ruby/object:Gem::Version
|
126
91
|
version: '0'
|
127
92
|
requirements: []
|
128
|
-
|
129
|
-
rubygems_version: 2.7.8
|
93
|
+
rubygems_version: 3.1.4
|
130
94
|
signing_key:
|
131
95
|
specification_version: 4
|
132
96
|
summary: An extension for Lograge to log SQL queries
|
data/.gitignore
DELETED
data/.rspec
DELETED
data/.travis.yml
DELETED
@@ -1,14 +0,0 @@
|
|
1
|
-
language: ruby
|
2
|
-
rvm:
|
3
|
-
- 2.5
|
4
|
-
before_install: gem install bundler -v 1.16.2
|
5
|
-
deploy:
|
6
|
-
provider: rubygems
|
7
|
-
api_key:
|
8
|
-
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=
|
9
|
-
gem: lograge-sql
|
10
|
-
on:
|
11
|
-
tags: true
|
12
|
-
repo: iMacTia/lograge-sql
|
13
|
-
rvm: 2.5
|
14
|
-
|
data/Gemfile
DELETED
data/bin/console
DELETED
@@ -1,14 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
|
3
|
-
require 'bundler/setup'
|
4
|
-
require 'lograge/sql'
|
5
|
-
|
6
|
-
# You can add fixtures and/or initialization code here to make experimenting
|
7
|
-
# with your gem easier. You can also use a different console, if you like.
|
8
|
-
|
9
|
-
# (If you use this, don't forget to add pry to your Gemfile!)
|
10
|
-
# require "pry"
|
11
|
-
# Pry.start
|
12
|
-
|
13
|
-
require 'irb'
|
14
|
-
IRB.start
|
data/bin/setup
DELETED
data/lograge-sql.gemspec
DELETED
@@ -1,28 +0,0 @@
|
|
1
|
-
# coding: utf-8
|
2
|
-
lib = File.expand_path('../lib', __FILE__)
|
3
|
-
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
-
require 'lograge/sql/version'
|
5
|
-
|
6
|
-
Gem::Specification.new do |spec|
|
7
|
-
spec.name = 'lograge-sql'
|
8
|
-
spec.version = Lograge::Sql::VERSION
|
9
|
-
spec.authors = ['Mattia Giuffrida']
|
10
|
-
spec.email = ['giuffrida.mattia@gmail.com']
|
11
|
-
|
12
|
-
spec.summary = %q{An extension for Lograge to log SQL queries}
|
13
|
-
spec.description = %q{An extension for Lograge to log SQL queries}
|
14
|
-
spec.homepage = 'https://github.com/iMacTia/lograge-sql'
|
15
|
-
spec.license = 'MIT'
|
16
|
-
|
17
|
-
spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
|
18
|
-
spec.bindir = 'exe'
|
19
|
-
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
20
|
-
spec.require_paths = ['lib']
|
21
|
-
|
22
|
-
spec.add_runtime_dependency 'lograge', '~> 0.4'
|
23
|
-
spec.add_runtime_dependency 'activerecord', '>= 4', '< 6.0'
|
24
|
-
|
25
|
-
spec.add_development_dependency 'bundler', '~> 1.0'
|
26
|
-
spec.add_development_dependency 'rake', '~> 10.0'
|
27
|
-
spec.add_development_dependency 'rspec', '~> 3.0'
|
28
|
-
end
|