rails-flog 1.3.2 → 1.6.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.
@@ -1,33 +1,49 @@
1
- # coding: utf-8
2
- require "rails"
1
+ # frozen_string_literal: true
2
+
3
+ require 'rails'
3
4
 
4
5
  module Flog
6
+ # Status returns checke result of switch files
5
7
  class Status
6
- SWITCH_FILE_NAME = "no-flog.txt"
7
- SQL_SWITCH_FILE_NAME = "no-flog-sql.txt"
8
- PARAMS_SWITCH_FILE_NAME = "no-flog-params.txt"
9
-
10
- def self.enabled?
11
- !switch_file_exists?(SWITCH_FILE_NAME)
12
- rescue
13
- true
14
- end
8
+ SWITCH_FILE_NAME = 'no-flog.txt'
9
+ SQL_SWITCH_FILE_NAME = 'no-flog-sql.txt'
10
+ PARAMS_SWITCH_FILE_NAME = 'no-flog-params.txt'
11
+ class << self
12
+ def enabled?
13
+ !switch_file_exists?(SWITCH_FILE_NAME)
14
+ rescue StandardError
15
+ true
16
+ end
15
17
 
16
- def self.sql_formattable?
17
- enabled? && !switch_file_exists?(SQL_SWITCH_FILE_NAME)
18
- rescue
19
- true
20
- end
18
+ def sql_formattable?
19
+ enabled? && !switch_file_exists?(SQL_SWITCH_FILE_NAME)
20
+ rescue StandardError
21
+ true
22
+ end
21
23
 
22
- def self.params_formattable?
23
- enabled? && !switch_file_exists?(PARAMS_SWITCH_FILE_NAME)
24
- rescue
25
- true
26
- end
24
+ def params_formattable?
25
+ enabled? && !switch_file_exists?(PARAMS_SWITCH_FILE_NAME)
26
+ rescue StandardError
27
+ true
28
+ end
29
+
30
+ def switch_file_base_path
31
+ if Rails.root&.exist?
32
+ Rails.root
33
+ else
34
+ Pathname.new(File.expand_path(File.dirname(__FILE__) + '../../'))
35
+ end
36
+ end
37
+
38
+ def switch_file_dir_path
39
+ switch_file_base_path.join('tmp')
40
+ end
41
+
42
+ private
27
43
 
28
- private
29
- def self.switch_file_exists?(file_name)
30
- File.exist?(Rails.root.join("tmp", file_name).to_s)
44
+ def switch_file_exists?(file_name)
45
+ switch_file_dir_path.join(file_name).exist?
46
+ end
31
47
  end
32
48
  end
33
49
  end
@@ -1,4 +1,5 @@
1
- # coding: utf-8
1
+ # frozen_string_literal: true
2
+
2
3
  module Flog
3
- VERSION = "1.3.2"
4
+ VERSION = '1.6.1'
4
5
  end
@@ -1,30 +1,32 @@
1
- # coding: utf-8
2
- lib = File.expand_path('../lib', __FILE__)
1
+ # frozen_string_literal: true
2
+
3
+ lib = File.expand_path('lib', __dir__)
3
4
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
5
  require 'flog/version'
5
6
 
6
7
  Gem::Specification.new do |spec|
7
- spec.name = "rails-flog"
8
+ spec.name = 'rails-flog'
8
9
  spec.version = Flog::VERSION
9
- spec.authors = ["pinzolo"]
10
- spec.email = ["pinzolo@gmail.com"]
11
- spec.description = %q{This formats parameters and sql in rails log.}
12
- spec.summary = %q{Rails log formatter for parameters and sql}
13
- spec.homepage = "https://github.com/pinzolo/rails-flog"
14
- spec.license = "MIT"
10
+ spec.authors = ['pinzolo']
11
+ spec.email = ['pinzolo@gmail.com']
12
+ spec.description = 'This formats parameters and sql in rails log.'
13
+ spec.summary = 'Rails log formatter for parameters and sql'
14
+ spec.homepage = 'https://github.com/pinzolo/rails-flog'
15
+ spec.license = 'MIT'
15
16
 
16
- spec.files = `git ls-files`.split($/)
17
+ spec.files = `git ls-files`.split($INPUT_RECORD_SEPARATOR)
17
18
  spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
19
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
- spec.require_paths = ["lib"]
20
+ spec.require_paths = ['lib']
20
21
 
21
- spec.add_development_dependency "bundler", "~> 1.3"
22
- spec.add_development_dependency "rake"
23
- spec.add_development_dependency "sqlite3"
24
- spec.add_development_dependency "coveralls"
25
- spec.add_development_dependency "mocha"
22
+ spec.add_development_dependency 'bundler'
23
+ spec.add_development_dependency 'coveralls'
24
+ spec.add_development_dependency 'minitest'
25
+ spec.add_development_dependency 'rake'
26
+ spec.add_development_dependency 'rubocop'
27
+ spec.add_development_dependency 'sqlite3'
26
28
 
27
- spec.add_dependency "rails", ">=3.2.0"
28
- spec.add_dependency "anbt-sql-formatter"
29
- spec.add_dependency "awesome_print"
29
+ spec.add_dependency 'anbt-sql-formatter', '>=0.0.7'
30
+ spec.add_dependency 'amazing_print'
31
+ spec.add_dependency 'rails', '>=4.2.0'
30
32
  end
@@ -1,43 +1,56 @@
1
- # coding: utf-8
2
- require "coveralls"
3
- require "simplecov"
1
+ # frozen_string_literal: true
2
+
3
+ require 'coveralls'
4
+ require 'simplecov'
4
5
  SimpleCov.formatter = Coveralls::SimpleCov::Formatter
5
6
  SimpleCov.start do
6
7
  add_filter '/test/'
7
8
  add_filter '/bundle/'
8
9
  end
9
10
 
10
- Bundler.require
11
- require "flog"
12
- require "minitest/autorun"
13
- require "mocha/api"
11
+ require 'flog'
12
+ require 'minitest/autorun'
14
13
 
15
- class TestLogger
16
- attr_accessor :debugs, :infos, :errors
14
+ unless defined?(TestLogger)
15
+ class TestLogger
16
+ attr_accessor :debugs, :infos, :errors
17
17
 
18
- def initialize
19
- @debugs = []
20
- @infos = []
21
- @errors = []
22
- end
18
+ def initialize
19
+ @debugs = []
20
+ @infos = []
21
+ @errors = []
22
+ end
23
23
 
24
- def debug?
25
- true
26
- end
24
+ def debug?
25
+ true
26
+ end
27
27
 
28
- def info?
29
- true
30
- end
28
+ def info?
29
+ true
30
+ end
31
31
 
32
- def debug(message)
33
- @debugs += message.split("\n")
32
+ def debug(message)
33
+ @debugs += message.split("\n") if message
34
+ end
35
+
36
+ def info(message)
37
+ @infos += message.split("\n") if message
38
+ end
39
+
40
+ def error(message)
41
+ @errors += message.split("\n") if message
42
+ end
34
43
  end
44
+ end
45
+
46
+ unless defined?(COLOR_SEQ_REGEX)
47
+ COLOR_SEQ_REGEX = /\e\[(\d+;)*\d+m/.freeze
35
48
 
36
- def info(message)
37
- @infos += message.split("\n")
49
+ def remove_color_seq(log)
50
+ log.gsub(COLOR_SEQ_REGEX, '')
38
51
  end
39
52
 
40
- def error(message)
41
- @errors += message.split("\n")
53
+ def match_color_seq(log)
54
+ COLOR_SEQ_REGEX.match(log)
42
55
  end
43
56
  end
@@ -1,6 +1,7 @@
1
- # coding: utf-8
2
- require "action_controller"
3
- require "test_helper"
1
+ # frozen_string_literal: true
2
+
3
+ require 'action_controller'
4
+ require 'test_helper'
4
5
 
5
6
  class TestController < ActionController::Base
6
7
  def initialize(routes)
@@ -12,11 +13,11 @@ class TestController < ActionController::Base
12
13
  end
13
14
 
14
15
  def show
15
- render nothing: true
16
+ head :not_found
16
17
  end
17
18
  end
18
19
 
19
- class ParamsFormattableTest < ActionController::TestCase
20
+ module ParamsFormattableTestHelper
20
21
  def setup
21
22
  # default configuration
22
23
  Flog.configure do |config|
@@ -26,11 +27,7 @@ class ParamsFormattableTest < ActionController::TestCase
26
27
 
27
28
  @old_logger = ActionController::Base.logger
28
29
  ActiveSupport::LogSubscriber.colorize_logging = false
29
- @routes = ActionDispatch::Routing::RouteSet.new
30
- @routes.draw do
31
- get "test/show", to: "test#show"
32
- end
33
- @controller = TestController.new(@routes)
30
+ setup_routes
34
31
  super
35
32
  ActionController::Base.logger = TestLogger.new
36
33
  end
@@ -40,46 +37,90 @@ class ParamsFormattableTest < ActionController::TestCase
40
37
  ActionController::Base.logger = @old_logger
41
38
  end
42
39
 
40
+ def setup_routes
41
+ @routes = ActionDispatch::Routing::RouteSet.new
42
+ @routes.draw do
43
+ get 'test/show', to: 'test#show'
44
+ end
45
+ @controller = TestController.new(@routes)
46
+ end
47
+
48
+ def assert_logger(&block)
49
+ raise ActionController::Base.logger.errors.first if ActionController::Base.logger.errors.present?
50
+
51
+ block.call(ActionController::Base.logger)
52
+ end
53
+
54
+ def assert_include(log, *expected_includees)
55
+ expected_includees.each do |e|
56
+ assert log.include?(e)
57
+ end
58
+ end
59
+
60
+ def assert_hash(hash)
61
+ assert_equal hash['foo'], 'foo_value'
62
+ assert_equal hash['bar']['prop'], 'prop_value'
63
+ assert_equal hash['bar']['attr'], 'attr_value'
64
+ end
65
+
66
+ def get_show(params)
67
+ if Gem::Version.new(Rails.version) >= Gem::Version.new('5.0.0')
68
+ get :show, params: params
69
+ else
70
+ get :show, params
71
+ end
72
+ end
73
+
74
+ def hash_from_logs(logs, start, finish)
75
+ eval(start.upto(finish).reduce('') { |s, n| s + logs[n] })
76
+ end
77
+ end
78
+
79
+ class ParamsFormattableTest < ActionController::TestCase
80
+ include ParamsFormattableTestHelper
81
+
43
82
  def test_parameters_log_is_formatted
44
- get :show, foo: "foo_value", bar: "bar_value"
83
+ get_show foo: 'foo_value', bar: { prop: 'prop_value', attr: 'attr_value' }
45
84
  assert_logger do |logger|
46
- logs = logger.infos.map { |log| log.gsub(/\e\[(\d+;)*\d+m/, "") }
47
- assert_equal %( Parameters: ) , logs[1]
48
- assert_equal %({) , logs[2]
49
- assert_equal %( "foo" => "foo_value",), logs[3]
50
- assert_equal %( "bar" => "bar_value") , logs[4]
51
- assert_equal %(}) , logs[5]
85
+ logs = logger.infos.map { |log| remove_color_seq(log) }
86
+ assert_equal ' Parameters: ', logs[1]
87
+ hash = hash_from_logs(logs, 2, 8)
88
+ assert_hash hash
52
89
  end
53
90
  end
54
91
 
55
92
  def test_colorized_on_colorize_loggin_is_true
56
93
  ActiveSupport::LogSubscriber.colorize_logging = true
57
- get :show, foo: "foo_value", bar: "bar_value"
94
+ get_show foo: 'foo_value', bar: 'bar_value'
58
95
  assert_logger do |logger|
59
- assert /\e\[(\d+;)*\d+m/.match(logger.infos.join())
96
+ assert match_color_seq(logger.infos.join)
60
97
  end
61
98
  end
62
99
 
63
100
  def test_not_colorized_on_colorize_loggin_is_false
64
- get :show, foo: "foo_value", bar: "bar_value"
65
- assert_logger do |logger|
66
- assert_nil /\e\[(\d+;)*\d+m/.match(logger.infos.join())
101
+ Flog::Status.stub(:enabled?, true) do
102
+ get_show foo: 'foo_value', bar: 'bar_value'
103
+ assert_logger do |logger|
104
+ assert_nil match_color_seq(logger.infos.join)
105
+ end
67
106
  end
68
107
  end
69
108
 
70
109
  def test_parameters_log_is_not_formatted_when_enabled_is_false
71
- Flog::Status.stubs(:enabled?).returns(false)
72
- get :show, foo: "foo_value", bar: "bar_value"
73
- assert_logger do |logger|
74
- assert logger.infos[1].include?(%(Parameters: {"foo"=>"foo_value", "bar"=>"bar_value"}))
110
+ Flog::Status.stub(:enabled?, false) do
111
+ get_show foo: 'foo_value', bar: 'bar_value'
112
+ assert_logger do |logger|
113
+ assert_include logger.infos[1], 'Parameters: {', %("foo"=>"foo_value"), %("bar"=>"bar_value")
114
+ end
75
115
  end
76
116
  end
77
117
 
78
118
  def test_parameters_log_is_not_formatted_when_params_formattable_is_false
79
- Flog::Status.stubs(:params_formattable?).returns(false)
80
- get :show, foo: "foo_value", bar: "bar_value"
81
- assert_logger do |logger|
82
- assert logger.infos[1].include?(%(Parameters: {"foo"=>"foo_value", "bar"=>"bar_value"}))
119
+ Flog::Status.stub(:params_formattable?, false) do
120
+ get_show foo: 'foo_value', bar: 'bar_value'
121
+ assert_logger do |logger|
122
+ assert_include logger.infos[1], 'Parameters: {', %("foo"=>"foo_value"), %("bar"=>"bar_value")
123
+ end
83
124
  end
84
125
  end
85
126
 
@@ -87,9 +128,9 @@ class ParamsFormattableTest < ActionController::TestCase
87
128
  Flog.configure do |config|
88
129
  config.params_key_count_threshold = 2
89
130
  end
90
- get :show, foo: "foo_value", bar: "bar_value"
131
+ get_show foo: 'foo_value', bar: 'bar_value'
91
132
  assert_logger do |logger|
92
- assert logger.infos[1].include?(%(Parameters: {"foo"=>"foo_value", "bar"=>"bar_value"}))
133
+ assert_include logger.infos[1], 'Parameters: {', %("foo"=>"foo_value"), %("bar"=>"bar_value")
93
134
  end
94
135
  end
95
136
 
@@ -97,36 +138,34 @@ class ParamsFormattableTest < ActionController::TestCase
97
138
  Flog.configure do |config|
98
139
  config.params_key_count_threshold = 3
99
140
  end
100
- get :show, foo: "foo_value", bar: "bar_value"
141
+ get_show foo: 'foo_value', bar: 'bar_value'
101
142
  assert_logger do |logger|
102
- assert logger.infos[1].include?(%(Parameters: {"foo"=>"foo_value", "bar"=>"bar_value"}))
143
+ assert_include logger.infos[1], 'Parameters: {', %("foo"=>"foo_value"), %("bar"=>"bar_value")
103
144
  end
104
145
  end
105
146
 
147
+ # rubocop:disable Metrics/LineLength
106
148
  def test_parameters_log_is_formatted_when_key_of_parameters_count_is_under_configured_threshold_but_force_on_nested_params_configuration_is_true
107
149
  Flog.configure do |config|
108
150
  config.params_key_count_threshold = 3
109
151
  end
110
- get :show, foo: "foo_value", bar: { prop: "prop_value", attr: "attr_value" }
152
+ get_show foo: 'foo_value', bar: { prop: 'prop_value', attr: 'attr_value' }
111
153
  assert_logger do |logger|
112
- logs = logger.infos.map { |log| log.gsub(/\e\[(\d+;)*\d+m/, "") }
113
- assert_equal %( Parameters: ) , logs[1]
114
- assert_equal %({) , logs[2]
115
- assert_equal %( "foo" => "foo_value",) , logs[3]
116
- assert_equal %( "bar" => {) , logs[4]
117
- assert_equal %( "prop" => "prop_value",), logs[5]
118
- assert_equal %( "attr" => "attr_value") , logs[6]
119
- assert_equal %( }) , logs[7]
120
- assert_equal %(}) , logs[8]
154
+ logs = logger.infos.map { |log| remove_color_seq(log) }
155
+ assert_equal ' Parameters: ', logs[1]
156
+ hash = hash_from_logs(logs, 2, 8)
157
+ assert_hash hash
121
158
  end
122
159
  end
160
+ # rubocop:enable Metrics/LineLength
123
161
 
124
- private
125
- def assert_logger(&block)
126
- if ActionController::Base.logger.errors.present?
127
- fail ActionController::Base.logger.errors.first
128
- else
129
- block.call(ActionController::Base.logger)
162
+ def test_parameters_log_is_not_formatted_when_ignore_params_configuration_is_true
163
+ Flog.configure do |config|
164
+ config.ignore_params = true
165
+ end
166
+ get_show foo: 'foo_value', bar: 'bar_value'
167
+ assert_logger do |logger|
168
+ assert_include logger.infos[1], 'Parameters: {', %("foo"=>"foo_value"), %("bar"=>"bar_value")
130
169
  end
131
170
  end
132
171
  end
@@ -1,5 +1,6 @@
1
- # coding: utf-8
2
- require "test_helper"
1
+ # frozen_string_literal: true
2
+
3
+ require 'test_helper'
3
4
 
4
5
  class TestClass
5
6
  include Flog::PayloadValueShuntable
@@ -8,49 +9,49 @@ end
8
9
  class PayloadValueShuntableTest < ActiveSupport::TestCase
9
10
  def setup
10
11
  @tester = TestClass.new
11
- @payload = { foo: "foo_value", bar: "bar_value" }
12
+ @payload = { foo: 'foo_value', bar: 'bar_value' }
12
13
  end
13
14
 
14
15
  def test_shunt_payload_value
15
- @tester.shunt_payload_value(@payload, :foo, "new_value") do
16
- assert_equal "new_value", @payload[:foo]
16
+ @tester.shunt_payload_value(@payload, :foo, 'new_value') do
17
+ assert_equal 'new_value', @payload[:foo]
17
18
  end
18
19
  end
19
20
 
20
21
  def test_value_of_other_key_is_not_changed
21
- @tester.shunt_payload_value(@payload, :foo, "new_value") do
22
- assert_equal "bar_value", @payload[:bar]
22
+ @tester.shunt_payload_value(@payload, :foo, 'new_value') do
23
+ assert_equal 'bar_value', @payload[:bar]
23
24
  end
24
25
  end
25
26
 
26
27
  def test_restoration
27
- @tester.shunt_payload_value(@payload, :foo, "new_value") do
28
- assert_equal "new_value", @payload[:foo]
28
+ @tester.shunt_payload_value(@payload, :foo, 'new_value') do
29
+ assert_equal 'new_value', @payload[:foo]
29
30
  end
30
- assert_equal "foo_value", @payload[:foo]
31
+ assert_equal 'foo_value', @payload[:foo]
31
32
  end
32
33
 
33
34
  def test_ensure_restoration_on_error_raised_in_block
34
35
  error_raised = false
35
36
  begin
36
- @tester.shunt_payload_value(@payload, :foo, "new_value") do
37
- raise "error"
37
+ @tester.shunt_payload_value(@payload, :foo, 'new_value') do
38
+ raise 'error'
38
39
  end
39
- rescue => ex
40
+ rescue StandardError
40
41
  error_raised = true
41
42
  end
42
43
  assert error_raised
43
- assert_equal "foo_value", @payload[:foo]
44
+ assert_equal 'foo_value', @payload[:foo]
44
45
  end
45
46
 
46
47
  def test_without_block
47
- @tester.shunt_payload_value(@payload, :foo, "new_value")
48
- assert_equal "foo_value", @payload[:foo]
48
+ @tester.shunt_payload_value(@payload, :foo, 'new_value')
49
+ assert_equal 'foo_value', @payload[:foo]
49
50
  end
50
51
 
51
52
  def test_key_removed_when_give_not_exist_key
52
- @tester.shunt_payload_value(@payload, :baz, "new_value") do
53
- assert_equal "new_value", @payload[:baz]
53
+ @tester.shunt_payload_value(@payload, :baz, 'new_value') do
54
+ assert_equal 'new_value', @payload[:baz]
54
55
  end
55
56
  assert_equal false, @payload.key?(:baz)
56
57
  end