rails-flog 1.4.0 → 1.5.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: ea548e225007f44c586d46f6eb80e223a8e3811b
4
- data.tar.gz: a75ec850a8e3791b4f2f989751d2e50995a16def
2
+ SHA256:
3
+ metadata.gz: a916ad1e90e6cc5129639360c15c13638e014c5c3ab60ae03e5a68b38f8601e5
4
+ data.tar.gz: 271eab7f87be9bb46ffdb028732bd244f76b933b1fe6bda290b199050cdbee68
5
5
  SHA512:
6
- metadata.gz: 7493abeb100a8b089fca0431e99fbb7e0e9b57ab5781cf7bb2d575ed0ae709add8f70c9c24be1e18cb3f857f18299129a3bcb7db1248840358af4160886bf978
7
- data.tar.gz: 83f43ad891a50b08948aae9cdee9c4874abbc3c9951fa6ac01051d663a2d8245b9e50c3907f71e60d5f9caa16bb48058671b64eebc48a28df420672f4e7c6ea7
6
+ metadata.gz: 5f8b98fff00f12bb337573c9fe988e65596d6ce76ffd43defc7b5651286675049741b41d6dd03f3da6216e3b68e371f2bce60b1173c8ec3175a0a91be12d98cd
7
+ data.tar.gz: cfe53e680ac6ed2d86eee1e30e14350bbdfe00bbb7e9910345aef5b72ee20bb9d6766870d1c7a3747014dbb2758379b7b1447c5f38ba6540e21ec95f8d8de7a5
data/.gitignore CHANGED
@@ -16,3 +16,5 @@ test/tmp
16
16
  test/version_tmp
17
17
  tmp
18
18
  vendor/bundle
19
+
20
+ .idea
@@ -1,25 +1,14 @@
1
1
  language: ruby
2
2
  sudo: false
3
+ branches:
4
+ only:
5
+ - master
3
6
  rvm:
4
- - 2.0
5
- - 2.1
6
- - 2.2
7
7
  - 2.3
8
8
  - 2.4
9
+ - 2.5
9
10
  gemfile:
10
- - gemfiles/rails_3_2_x.gemfile
11
- - gemfiles/rails_4_0_x.gemfile
12
- - gemfiles/rails_4_1_x.gemfile
13
11
  - gemfiles/rails_4_2_x.gemfile
14
12
  - gemfiles/rails_5_0_x.gemfile
15
13
  - 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
14
+ - gemfiles/rails_5_2_x.gemfile
data/README.md CHANGED
@@ -126,8 +126,8 @@ Priority of this feature is higher than configurations.
126
126
 
127
127
  ## Supported versions
128
128
 
129
- - Ruby: 2.0.x, 2.1.x, 2.2.x
130
- - Rails: 3.2.x, 4.0.x, 4.1.x, 4.2.x
129
+ - Ruby: 2.3.x, 2.4.x, 2.5.x
130
+ - Rails: 4.2.x, 5.0.x, 5.1.x, 5.2.x
131
131
 
132
132
  ## Contributing
133
133
 
@@ -148,3 +148,4 @@ Priority of this feature is higher than configurations.
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
150
  - v1.4.0 (2017-10-01 JST): Compatible for Rails 5.0 and Rails 5.1, and dropped Ruby 1.9.3 support
151
+ - v1.5.0 (2018-12-19 JST): Add `sql_indenti` and `sql_in_values_num` options, and dropped eol rails versions.
@@ -1,5 +1,5 @@
1
1
  source "https://rubygems.org"
2
2
 
3
- gem "rails", "~>4.0.0"
3
+ gem "rails", "~>5.2.0"
4
4
 
5
5
  gemspec :path => "../"
@@ -1,13 +1,19 @@
1
+ require "anbt-sql-formatter/rule"
2
+
1
3
  module Flog
4
+ ONELINE_IN_VALUES_NUM = ::AnbtSql::Rule::ONELINE_IN_VALUES_NUM
5
+
2
6
  class Configuration
3
7
  attr_writer :ignore_cached_query, :force_on_nested_params
4
- attr_accessor :query_duration_threshold, :params_key_count_threshold
8
+ attr_accessor :query_duration_threshold, :params_key_count_threshold, :sql_indent, :sql_in_values_num
5
9
 
6
10
  def initialize
7
11
  @ignore_cached_query = true
8
12
  @query_duration_threshold = 0.0
9
13
  @params_key_count_threshold = 1
10
14
  @force_on_nested_params = true
15
+ @sql_indent = "\t"
16
+ @sql_in_values_num = 1
11
17
  end
12
18
 
13
19
  def ignore_cached_query?
@@ -24,6 +30,8 @@ module Flog
24
30
  end
25
31
 
26
32
  def self.configure
27
- yield(config) if block_given?
33
+ cfg = Flog::Configuration.new
34
+ yield(cfg) if block_given?
35
+ @@config = cfg
28
36
  end
29
37
  end
@@ -9,22 +9,24 @@ module Flog::SqlFormattable
9
9
 
10
10
  formatted = format_sql(event.payload[:sql])
11
11
 
12
- shunt_payload_value(event.payload, :sql, "\n\t#{formatted}") do
12
+ shunt_payload_value(event.payload, :sql, "\n#{Flog.config.sql_indent}#{formatted}") do
13
13
  super(event)
14
14
  end
15
15
  end
16
16
 
17
17
  private
18
+
18
19
  def format_sql(sql)
19
20
  return sql if sql.blank?
20
21
 
21
22
  require "anbt-sql-formatter/formatter"
22
23
  rule = AnbtSql::Rule.new
23
24
  rule.keyword = AnbtSql::Rule::KEYWORD_UPPER_CASE
25
+ rule.indent_string = Flog.config.sql_indent
26
+ rule.in_values_num = Flog.config.sql_in_values_num
24
27
  %w(count sum).each do |function_name|
25
28
  rule.function_names << function_name
26
29
  end
27
- rule.indent_string = "\t"
28
30
  AnbtSql::Formatter.new(rule).format(sql.squeeze(" "))
29
31
  end
30
32
 
@@ -1,3 +1,3 @@
1
1
  module Flog
2
- VERSION = "1.4.0"
2
+ VERSION = "1.5.0"
3
3
  end
@@ -24,7 +24,7 @@ Gem::Specification.new do |spec|
24
24
  spec.add_development_dependency "minitest"
25
25
  spec.add_development_dependency "coveralls"
26
26
 
27
- spec.add_dependency "rails", ">=3.2.0"
28
- spec.add_dependency "anbt-sql-formatter"
27
+ spec.add_dependency "rails", ">=4.2.0"
28
+ spec.add_dependency "anbt-sql-formatter", ">=0.0.7"
29
29
  spec.add_dependency "awesome_print"
30
30
  end
@@ -32,13 +32,12 @@ class SqlFormattableTest < ActiveSupport::TestCase
32
32
  def test_sql_is_formatted
33
33
  Book.where(category: "comics").to_a
34
34
  assert_logger do |logger|
35
- logs = logger.debugs.map { |log| log.gsub("\t", " ") }
36
- assert_equal %{ SELECT} , logs[1]
37
- assert_equal %{ "books" . *} , logs[2]
38
- assert_equal %{ FROM} , logs[3]
39
- assert_equal %{ "books"} , logs[4]
40
- assert_equal %{ WHERE} , logs[5]
41
- assert logs[6].start_with?(%{ "books" . "category" = })
35
+ assert_equal %{\tSELECT} , logger.debugs[1]
36
+ assert_equal %{\t\t"books" . *}, logger.debugs[2]
37
+ assert_equal %{\tFROM} , logger.debugs[3]
38
+ assert_equal %{\t\t"books"} , logger.debugs[4]
39
+ assert_equal %{\tWHERE} , logger.debugs[5]
40
+ assert logger.debugs[6].start_with?(%{\t\t"books" . "category" = })
42
41
  end
43
42
  end
44
43
 
@@ -81,8 +80,7 @@ class SqlFormattableTest < ActiveSupport::TestCase
81
80
  Book.where(category: "comics").to_a
82
81
  end
83
82
  assert_logger do |logger|
84
- logs = logger.debugs.map { |log| log.gsub("\t", " ") }
85
- logs.each do |log|
83
+ logger.debugs.each do |log|
86
84
  assert_one_line_sql log if log.include?("CACHE")
87
85
  end
88
86
  end
@@ -97,8 +95,7 @@ class SqlFormattableTest < ActiveSupport::TestCase
97
95
  Book.where(category: "comics").to_a
98
96
  end
99
97
  assert_logger do |logger|
100
- logs = logger.debugs.map { |log| log.gsub("\t", " ") }
101
- logs.each do |log|
98
+ logger.debugs.each do |log|
102
99
  assert_equal log.include?("SELECT"), false if log.include?("CACHE")
103
100
  end
104
101
  end
@@ -114,6 +111,72 @@ class SqlFormattableTest < ActiveSupport::TestCase
114
111
  end
115
112
  end
116
113
 
114
+ def test_2space_indent
115
+ Flog.configure do |config|
116
+ config.sql_indent = " "
117
+ end
118
+ Book.where(category: "comics").to_a
119
+ assert_logger do |logger|
120
+ assert_equal %{ SELECT} , logger.debugs[1]
121
+ assert_equal %{ "books" . *}, logger.debugs[2]
122
+ assert_equal %{ FROM} , logger.debugs[3]
123
+ assert_equal %{ "books"} , logger.debugs[4]
124
+ assert_equal %{ WHERE} , logger.debugs[5]
125
+ assert logger.debugs[6].start_with?(%{ "books" . "category" = })
126
+ end
127
+ end
128
+
129
+ def test_default_in_values_num
130
+ Book.where(id: (1..10).to_a).to_a
131
+ assert_logger do |logger|
132
+ assert_equal %{\tSELECT} , logger.debugs[1]
133
+ assert_equal %{\t\t"books" . *} , logger.debugs[2]
134
+ assert_equal %{\tFROM} , logger.debugs[3]
135
+ assert_equal %{\t\t"books"} , logger.debugs[4]
136
+ assert_equal %{\tWHERE} , logger.debugs[5]
137
+ assert_equal %{\t\t"books" . "id" IN (}, logger.debugs[6]
138
+ (8..16).each do |l|
139
+ assert_equal 1, logger.debugs[l].count(",")
140
+ end
141
+ assert logger.debugs[17].start_with?(%{\t\t)})
142
+ end
143
+ end
144
+
145
+ def test_in_values_num_set
146
+ Flog.configure do |config|
147
+ config.sql_in_values_num = 5
148
+ end
149
+ Book.where(id: (1..10).to_a).to_a
150
+ assert_logger do |logger|
151
+ assert_equal %{\tSELECT} , logger.debugs[1]
152
+ assert_equal %{\t\t"books" . *} , logger.debugs[2]
153
+ assert_equal %{\tFROM} , logger.debugs[3]
154
+ assert_equal %{\t\t"books"} , logger.debugs[4]
155
+ assert_equal %{\tWHERE} , logger.debugs[5]
156
+ assert_equal %{\t\t"books" . "id" IN (}, logger.debugs[6]
157
+ assert_equal 4, logger.debugs[7].count(",")
158
+ assert_equal 5, logger.debugs[8].count(",")
159
+ assert logger.debugs[9].start_with?(%{\t\t)})
160
+ end
161
+ end
162
+
163
+ def test_oneline_in_values
164
+ Flog.configure do |config|
165
+ config.sql_in_values_num = Flog::ONELINE_IN_VALUES_NUM
166
+ end
167
+ Book.where(id: (1..10).to_a).to_a
168
+ assert_logger do |logger|
169
+ assert_equal %{\tSELECT} , logger.debugs[1]
170
+ assert_equal %{\t\t"books" . *} , logger.debugs[2]
171
+ assert_equal %{\tFROM} , logger.debugs[3]
172
+ assert_equal %{\t\t"books"} , logger.debugs[4]
173
+ assert_equal %{\tWHERE} , logger.debugs[5]
174
+ assert_equal %{\t\t"books" . "id" IN (}, logger.debugs[6]
175
+ assert_equal 9, logger.debugs[7].count(",")
176
+ assert logger.debugs[8].start_with?(%{\t\t)})
177
+ end
178
+ end
179
+
117
180
  private
118
181
  def assert_logger(&block)
119
182
  if ActiveRecord::Base.logger.errors.present?
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.0
4
+ version: 1.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - pinzolo
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-10-01 00:00:00.000000000 Z
11
+ date: 2018-12-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -86,28 +86,28 @@ dependencies:
86
86
  requirements:
87
87
  - - ">="
88
88
  - !ruby/object:Gem::Version
89
- version: 3.2.0
89
+ version: 4.2.0
90
90
  type: :runtime
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
94
  - - ">="
95
95
  - !ruby/object:Gem::Version
96
- version: 3.2.0
96
+ version: 4.2.0
97
97
  - !ruby/object:Gem::Dependency
98
98
  name: anbt-sql-formatter
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
101
  - - ">="
102
102
  - !ruby/object:Gem::Version
103
- version: '0'
103
+ version: 0.0.7
104
104
  type: :runtime
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
108
  - - ">="
109
109
  - !ruby/object:Gem::Version
110
- version: '0'
110
+ version: 0.0.7
111
111
  - !ruby/object:Gem::Dependency
112
112
  name: awesome_print
113
113
  requirement: !ruby/object:Gem::Requirement
@@ -136,12 +136,10 @@ files:
136
136
  - LICENSE.txt
137
137
  - README.md
138
138
  - Rakefile
139
- - gemfiles/rails_3_2_x.gemfile
140
- - gemfiles/rails_4_0_x.gemfile
141
- - gemfiles/rails_4_1_x.gemfile
142
139
  - gemfiles/rails_4_2_x.gemfile
143
140
  - gemfiles/rails_5_0_x.gemfile
144
141
  - gemfiles/rails_5_1_x.gemfile
142
+ - gemfiles/rails_5_2_x.gemfile
145
143
  - lib/flog.rb
146
144
  - lib/flog/configuration.rb
147
145
  - lib/flog/params_formattable.rb
@@ -176,7 +174,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
176
174
  version: '0'
177
175
  requirements: []
178
176
  rubyforge_project:
179
- rubygems_version: 2.6.13
177
+ rubygems_version: 2.7.6
180
178
  signing_key:
181
179
  specification_version: 4
182
180
  summary: Rails log formatter for parameters and sql
@@ -1,10 +0,0 @@
1
- source "https://rubygems.org"
2
-
3
- gem "rails", "~> 3.2.0"
4
-
5
- group :test do
6
- gem "minitest", "~> 4.7.5"
7
- gem "test-unit", "~> 3.0"
8
- end
9
-
10
- gemspec :path => "../"
@@ -1,6 +0,0 @@
1
- source "https://rubygems.org"
2
-
3
- gem "rails", "~>4.1.0"
4
-
5
- gemspec :path => "../"
6
-