rails-flog 1.3.2 → 1.6.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -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