rails-flog 1.3.3 → 1.4.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/.travis.yml +15 -1
- data/README.md +2 -1
- data/gemfiles/rails_5_0_x.gemfile +5 -0
- data/gemfiles/rails_5_1_x.gemfile +5 -0
- data/lib/flog.rb +0 -2
- data/lib/flog/configuration.rb +0 -1
- data/lib/flog/params_formattable.rb +9 -8
- data/lib/flog/payload_value_shuntable.rb +0 -1
- data/lib/flog/sql_formattable.rb +9 -7
- data/lib/flog/status.rb +0 -1
- data/lib/flog/version.rb +1 -2
- data/test/test_helper.rb +33 -20
- data/test/unit/params_formattable_test.rb +46 -31
- data/test/unit/payload_value_shuntable_test.rb +1 -2
- data/test/unit/sql_formattable_test.rb +2 -3
- data/test/unit/status_test.rb +0 -1
- metadata +5 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ea548e225007f44c586d46f6eb80e223a8e3811b
|
4
|
+
data.tar.gz: a75ec850a8e3791b4f2f989751d2e50995a16def
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7493abeb100a8b089fca0431e99fbb7e0e9b57ab5781cf7bb2d575ed0ae709add8f70c9c24be1e18cb3f857f18299129a3bcb7db1248840358af4160886bf978
|
7
|
+
data.tar.gz: 83f43ad891a50b08948aae9cdee9c4874abbc3c9951fa6ac01051d663a2d8245b9e50c3907f71e60d5f9caa16bb48058671b64eebc48a28df420672f4e7c6ea7
|
data/.travis.yml
CHANGED
@@ -1,11 +1,25 @@
|
|
1
1
|
language: ruby
|
2
|
+
sudo: false
|
2
3
|
rvm:
|
3
|
-
- 1.9.3
|
4
4
|
- 2.0
|
5
5
|
- 2.1
|
6
6
|
- 2.2
|
7
|
+
- 2.3
|
8
|
+
- 2.4
|
7
9
|
gemfile:
|
8
10
|
- gemfiles/rails_3_2_x.gemfile
|
9
11
|
- gemfiles/rails_4_0_x.gemfile
|
10
12
|
- gemfiles/rails_4_1_x.gemfile
|
11
13
|
- gemfiles/rails_4_2_x.gemfile
|
14
|
+
- gemfiles/rails_5_0_x.gemfile
|
15
|
+
- gemfiles/rails_5_1_x.gemfile
|
16
|
+
matrix:
|
17
|
+
exclude:
|
18
|
+
- gemfile: gemfiles/rails_5_0_x.gemfile
|
19
|
+
rvm: 2.0
|
20
|
+
- gemfile: gemfiles/rails_5_0_x.gemfile
|
21
|
+
rvm: 2.1
|
22
|
+
- gemfile: gemfiles/rails_5_1_x.gemfile
|
23
|
+
rvm: 2.0
|
24
|
+
- gemfile: gemfiles/rails_5_1_x.gemfile
|
25
|
+
rvm: 2.1
|
data/README.md
CHANGED
@@ -126,7 +126,7 @@ Priority of this feature is higher than configurations.
|
|
126
126
|
|
127
127
|
## Supported versions
|
128
128
|
|
129
|
-
- Ruby:
|
129
|
+
- Ruby: 2.0.x, 2.1.x, 2.2.x
|
130
130
|
- Rails: 3.2.x, 4.0.x, 4.1.x, 4.2.x
|
131
131
|
|
132
132
|
## Contributing
|
@@ -147,3 +147,4 @@ Priority of this feature is higher than configurations.
|
|
147
147
|
- v1.3.1 (2014-01-27 JST): Refactored
|
148
148
|
- v1.3.2 (2014-04-28 JST): Confirm with Rails 4.1
|
149
149
|
- v1.3.3 (2015-11-16 JST): Confirm with Rails 4.2
|
150
|
+
- v1.4.0 (2017-10-01 JST): Compatible for Rails 5.0 and Rails 5.1, and dropped Ruby 1.9.3 support
|
data/lib/flog.rb
CHANGED
data/lib/flog/configuration.rb
CHANGED
@@ -1,21 +1,18 @@
|
|
1
|
-
# coding: utf-8
|
2
1
|
require "action_controller/log_subscriber"
|
3
2
|
require "awesome_print"
|
4
3
|
require "flog/payload_value_shuntable"
|
5
4
|
|
6
|
-
|
5
|
+
module Flog::ParamsFormattable
|
7
6
|
include Flog::PayloadValueShuntable
|
8
|
-
|
9
|
-
|
10
|
-
return start_processing_without_flog(event) unless formattable?(event)
|
7
|
+
def start_processing(event)
|
8
|
+
return super(event) unless formattable?(event)
|
11
9
|
|
12
10
|
replaced = replace_params(event.payload[:params])
|
13
11
|
|
14
12
|
shunt_payload_value(event.payload, :params, replaced) do
|
15
|
-
|
13
|
+
super(event)
|
16
14
|
end
|
17
15
|
end
|
18
|
-
alias_method_chain :start_processing, :flog
|
19
16
|
|
20
17
|
private
|
21
18
|
def replace_params(params)
|
@@ -54,7 +51,11 @@ class ActionController::LogSubscriber
|
|
54
51
|
|
55
52
|
def key_count_over?(event)
|
56
53
|
threshold = Flog.config.params_key_count_threshold.to_i
|
57
|
-
params = event.payload[:params].except(*INTERNAL_PARAMS)
|
54
|
+
params = event.payload[:params].except(*ActionController::LogSubscriber::INTERNAL_PARAMS)
|
58
55
|
params.keys.size > threshold
|
59
56
|
end
|
60
57
|
end
|
58
|
+
|
59
|
+
class ActionController::LogSubscriber
|
60
|
+
prepend Flog::ParamsFormattable
|
61
|
+
end
|
data/lib/flog/sql_formattable.rb
CHANGED
@@ -1,20 +1,18 @@
|
|
1
|
-
# coding: utf-8
|
2
1
|
require "active_record/log_subscriber"
|
3
2
|
require "flog/payload_value_shuntable"
|
4
3
|
|
5
|
-
|
4
|
+
module Flog::SqlFormattable
|
6
5
|
include Flog::PayloadValueShuntable
|
7
6
|
|
8
|
-
def
|
9
|
-
return
|
7
|
+
def sql(event)
|
8
|
+
return super(event) unless formattable?(event)
|
10
9
|
|
11
10
|
formatted = format_sql(event.payload[:sql])
|
12
11
|
|
13
12
|
shunt_payload_value(event.payload, :sql, "\n\t#{formatted}") do
|
14
|
-
|
13
|
+
super(event)
|
15
14
|
end
|
16
15
|
end
|
17
|
-
alias_method_chain :sql, :flog
|
18
16
|
|
19
17
|
private
|
20
18
|
def format_sql(sql)
|
@@ -39,10 +37,14 @@ class ActiveRecord::LogSubscriber
|
|
39
37
|
end
|
40
38
|
|
41
39
|
def ignore_by_cached_query?(event)
|
42
|
-
event.payload[:name] == "CACHE" && Flog.config.ignore_cached_query?
|
40
|
+
(event.payload[:name] == "CACHE" || event.payload[:cached]) && Flog.config.ignore_cached_query?
|
43
41
|
end
|
44
42
|
|
45
43
|
def duration_over?(event)
|
46
44
|
event.duration >= Flog.config.query_duration_threshold.to_f
|
47
45
|
end
|
48
46
|
end
|
47
|
+
|
48
|
+
class ActiveRecord::LogSubscriber
|
49
|
+
prepend Flog::SqlFormattable
|
50
|
+
end
|
data/lib/flog/status.rb
CHANGED
data/lib/flog/version.rb
CHANGED
data/test/test_helper.rb
CHANGED
@@ -1,4 +1,3 @@
|
|
1
|
-
# coding: utf-8
|
2
1
|
require "coveralls"
|
3
2
|
require "simplecov"
|
4
3
|
SimpleCov.formatter = Coveralls::SimpleCov::Formatter
|
@@ -10,32 +9,46 @@ end
|
|
10
9
|
require "flog"
|
11
10
|
require "minitest/autorun"
|
12
11
|
|
13
|
-
|
14
|
-
|
12
|
+
unless defined?(TestLogger)
|
13
|
+
class TestLogger
|
14
|
+
attr_accessor :debugs, :infos, :errors
|
15
15
|
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
16
|
+
def initialize
|
17
|
+
@debugs = []
|
18
|
+
@infos = []
|
19
|
+
@errors = []
|
20
|
+
end
|
21
21
|
|
22
|
-
|
23
|
-
|
24
|
-
|
22
|
+
def debug?
|
23
|
+
true
|
24
|
+
end
|
25
25
|
|
26
|
-
|
27
|
-
|
28
|
-
|
26
|
+
def info?
|
27
|
+
true
|
28
|
+
end
|
29
|
+
|
30
|
+
def debug(message)
|
31
|
+
@debugs += message.split("\n") if message
|
32
|
+
end
|
29
33
|
|
30
|
-
|
31
|
-
|
34
|
+
def info(message)
|
35
|
+
@infos += message.split("\n") if message
|
36
|
+
end
|
37
|
+
|
38
|
+
def error(message)
|
39
|
+
@errors += message.split("\n") if message
|
40
|
+
end
|
32
41
|
end
|
42
|
+
end
|
43
|
+
|
44
|
+
unless defined?(COLOR_SEQ_REGEX)
|
45
|
+
COLOR_SEQ_REGEX = /\e\[(\d+;)*\d+m/
|
33
46
|
|
34
|
-
def
|
35
|
-
|
47
|
+
def remove_color_seq(log)
|
48
|
+
log.gsub(COLOR_SEQ_REGEX, "")
|
36
49
|
end
|
37
50
|
|
38
|
-
def
|
39
|
-
|
51
|
+
def match_color_seq(log)
|
52
|
+
COLOR_SEQ_REGEX.match(log)
|
40
53
|
end
|
41
54
|
end
|
@@ -1,4 +1,3 @@
|
|
1
|
-
# coding: utf-8
|
2
1
|
require "action_controller"
|
3
2
|
require "test_helper"
|
4
3
|
|
@@ -12,7 +11,7 @@ class TestController < ActionController::Base
|
|
12
11
|
end
|
13
12
|
|
14
13
|
def show
|
15
|
-
|
14
|
+
head :not_found
|
16
15
|
end
|
17
16
|
end
|
18
17
|
|
@@ -41,48 +40,51 @@ class ParamsFormattableTest < ActionController::TestCase
|
|
41
40
|
end
|
42
41
|
|
43
42
|
def test_parameters_log_is_formatted
|
44
|
-
|
43
|
+
get_show foo: "foo_value", bar: "bar_value"
|
45
44
|
assert_logger do |logger|
|
46
|
-
logs = logger.infos.map { |log| log
|
47
|
-
assert_equal
|
48
|
-
|
49
|
-
assert_equal
|
50
|
-
assert_equal
|
51
|
-
assert_equal %(}) , logs[5]
|
45
|
+
logs = logger.infos.map { |log| remove_color_seq(log) }
|
46
|
+
assert_equal " Parameters: ", logs[1]
|
47
|
+
hash = hash_from_logs(logs, 2, 5)
|
48
|
+
assert_equal hash["foo"], "foo_value"
|
49
|
+
assert_equal hash["bar"], "bar_value"
|
52
50
|
end
|
53
51
|
end
|
54
52
|
|
55
53
|
def test_colorized_on_colorize_loggin_is_true
|
56
54
|
ActiveSupport::LogSubscriber.colorize_logging = true
|
57
|
-
|
55
|
+
get_show foo: "foo_value", bar: "bar_value"
|
58
56
|
assert_logger do |logger|
|
59
|
-
assert
|
57
|
+
assert match_color_seq(logger.infos.join())
|
60
58
|
end
|
61
59
|
end
|
62
60
|
|
63
61
|
def test_not_colorized_on_colorize_loggin_is_false
|
64
62
|
Flog::Status.stub(:enabled?, true) do
|
65
|
-
|
63
|
+
get_show foo: "foo_value", bar: "bar_value"
|
66
64
|
assert_logger do |logger|
|
67
|
-
assert_nil
|
65
|
+
assert_nil match_color_seq(logger.infos.join())
|
68
66
|
end
|
69
67
|
end
|
70
68
|
end
|
71
69
|
|
72
70
|
def test_parameters_log_is_not_formatted_when_enabled_is_false
|
73
71
|
Flog::Status.stub(:enabled?, false) do
|
74
|
-
|
72
|
+
get_show foo: "foo_value", bar: "bar_value"
|
75
73
|
assert_logger do |logger|
|
76
|
-
assert logger.infos[1].include?(
|
74
|
+
assert logger.infos[1].include?("Parameters: {")
|
75
|
+
assert logger.infos[1].include?(%("foo"=>"foo_value"))
|
76
|
+
assert logger.infos[1].include?(%("bar"=>"bar_value"))
|
77
77
|
end
|
78
78
|
end
|
79
79
|
end
|
80
80
|
|
81
81
|
def test_parameters_log_is_not_formatted_when_params_formattable_is_false
|
82
82
|
Flog::Status.stub(:params_formattable?, false) do
|
83
|
-
|
83
|
+
get_show foo: "foo_value", bar: "bar_value"
|
84
84
|
assert_logger do |logger|
|
85
|
-
assert logger.infos[1].include?(
|
85
|
+
assert logger.infos[1].include?("Parameters: {")
|
86
|
+
assert logger.infos[1].include?(%("foo"=>"foo_value"))
|
87
|
+
assert logger.infos[1].include?(%("bar"=>"bar_value"))
|
86
88
|
end
|
87
89
|
end
|
88
90
|
end
|
@@ -91,9 +93,11 @@ class ParamsFormattableTest < ActionController::TestCase
|
|
91
93
|
Flog.configure do |config|
|
92
94
|
config.params_key_count_threshold = 2
|
93
95
|
end
|
94
|
-
|
96
|
+
get_show foo: "foo_value", bar: "bar_value"
|
95
97
|
assert_logger do |logger|
|
96
|
-
assert logger.infos[1].include?(
|
98
|
+
assert logger.infos[1].include?("Parameters: {")
|
99
|
+
assert logger.infos[1].include?(%("foo"=>"foo_value"))
|
100
|
+
assert logger.infos[1].include?(%("bar"=>"bar_value"))
|
97
101
|
end
|
98
102
|
end
|
99
103
|
|
@@ -101,9 +105,11 @@ class ParamsFormattableTest < ActionController::TestCase
|
|
101
105
|
Flog.configure do |config|
|
102
106
|
config.params_key_count_threshold = 3
|
103
107
|
end
|
104
|
-
|
108
|
+
get_show foo: "foo_value", bar: "bar_value"
|
105
109
|
assert_logger do |logger|
|
106
|
-
assert logger.infos[1].include?(
|
110
|
+
assert logger.infos[1].include?("Parameters: {")
|
111
|
+
assert logger.infos[1].include?(%("foo"=>"foo_value"))
|
112
|
+
assert logger.infos[1].include?(%("bar"=>"bar_value"))
|
107
113
|
end
|
108
114
|
end
|
109
115
|
|
@@ -111,17 +117,14 @@ class ParamsFormattableTest < ActionController::TestCase
|
|
111
117
|
Flog.configure do |config|
|
112
118
|
config.params_key_count_threshold = 3
|
113
119
|
end
|
114
|
-
|
120
|
+
get_show foo: "foo_value", bar: { prop: "prop_value", attr: "attr_value" }
|
115
121
|
assert_logger do |logger|
|
116
|
-
logs = logger.infos.map { |log| log
|
117
|
-
assert_equal
|
118
|
-
|
119
|
-
assert_equal
|
120
|
-
assert_equal
|
121
|
-
assert_equal
|
122
|
-
assert_equal %( "attr" => "attr_value") , logs[6]
|
123
|
-
assert_equal %( }) , logs[7]
|
124
|
-
assert_equal %(}) , logs[8]
|
122
|
+
logs = logger.infos.map { |log| remove_color_seq(log) }
|
123
|
+
assert_equal " Parameters: ", logs[1]
|
124
|
+
hash = hash_from_logs(logs, 2, 8)
|
125
|
+
assert_equal hash["foo"], "foo_value"
|
126
|
+
assert_equal hash["bar"]["prop"], "prop_value"
|
127
|
+
assert_equal hash["bar"]["attr"], "attr_value"
|
125
128
|
end
|
126
129
|
end
|
127
130
|
|
@@ -133,4 +136,16 @@ class ParamsFormattableTest < ActionController::TestCase
|
|
133
136
|
block.call(ActionController::Base.logger)
|
134
137
|
end
|
135
138
|
end
|
139
|
+
|
140
|
+
def get_show(params)
|
141
|
+
if Gem::Version.new(Rails.version) >= Gem::Version.new("5.0.0")
|
142
|
+
get :show, params: params
|
143
|
+
else
|
144
|
+
get :show, params
|
145
|
+
end
|
146
|
+
end
|
147
|
+
|
148
|
+
def hash_from_logs(logs, start, finish)
|
149
|
+
eval(start.upto(finish).reduce("") { |s, n| s + logs[n] })
|
150
|
+
end
|
136
151
|
end
|
@@ -1,4 +1,3 @@
|
|
1
|
-
# coding: utf-8
|
2
1
|
require "test_helper"
|
3
2
|
|
4
3
|
class TestClass
|
@@ -36,7 +35,7 @@ class PayloadValueShuntableTest < ActiveSupport::TestCase
|
|
36
35
|
@tester.shunt_payload_value(@payload, :foo, "new_value") do
|
37
36
|
raise "error"
|
38
37
|
end
|
39
|
-
rescue
|
38
|
+
rescue
|
40
39
|
error_raised = true
|
41
40
|
end
|
42
41
|
assert error_raised
|
@@ -1,4 +1,3 @@
|
|
1
|
-
# coding: utf-8
|
2
1
|
require "active_record"
|
3
2
|
require "test_helper"
|
4
3
|
|
@@ -47,14 +46,14 @@ class SqlFormattableTest < ActiveSupport::TestCase
|
|
47
46
|
ActiveSupport::LogSubscriber.colorize_logging = true
|
48
47
|
Book.where(category: "comics").to_a
|
49
48
|
assert_logger do |logger|
|
50
|
-
assert
|
49
|
+
assert match_color_seq(logger.debugs.join())
|
51
50
|
end
|
52
51
|
end
|
53
52
|
|
54
53
|
def test_not_colorized_on_colorize_loggin_is_false
|
55
54
|
Book.where(category: "comics").to_a
|
56
55
|
assert_logger do |logger|
|
57
|
-
assert_nil
|
56
|
+
assert_nil match_color_seq(logger.debugs.join())
|
58
57
|
end
|
59
58
|
end
|
60
59
|
|
data/test/unit/status_test.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rails-flog
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- pinzolo
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2017-10-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -140,6 +140,8 @@ files:
|
|
140
140
|
- gemfiles/rails_4_0_x.gemfile
|
141
141
|
- gemfiles/rails_4_1_x.gemfile
|
142
142
|
- gemfiles/rails_4_2_x.gemfile
|
143
|
+
- gemfiles/rails_5_0_x.gemfile
|
144
|
+
- gemfiles/rails_5_1_x.gemfile
|
143
145
|
- lib/flog.rb
|
144
146
|
- lib/flog/configuration.rb
|
145
147
|
- lib/flog/params_formattable.rb
|
@@ -174,7 +176,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
174
176
|
version: '0'
|
175
177
|
requirements: []
|
176
178
|
rubyforge_project:
|
177
|
-
rubygems_version: 2.
|
179
|
+
rubygems_version: 2.6.13
|
178
180
|
signing_key:
|
179
181
|
specification_version: 4
|
180
182
|
summary: Rails log formatter for parameters and sql
|