blouson 3.0.0 → 5.0.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/.github/workflows/ci.yml +9 -5
- data/.gitignore +1 -0
- data/Appraisals +8 -8
- data/CHANGELOG.md +13 -0
- data/blouson.gemspec +2 -2
- data/gemfiles/{rails_6.0.gemfile → rails_7.2.gemfile} +1 -1
- data/gemfiles/{rails_6.1.gemfile → rails_8.0.gemfile} +1 -1
- data/gemfiles/{rails_7.0.gemfile → rails_8.1.gemfile} +1 -1
- data/lib/blouson/engine.rb +8 -2
- data/lib/blouson/sensitive_query_filter.rb +33 -13
- data/lib/blouson/sensitive_table_query_log_silencer.rb +4 -4
- data/lib/blouson/sentry_parameter_filter.rb +1 -7
- data/lib/blouson/version.rb +1 -1
- metadata +10 -13
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 893f69fbcd20b47c42747057d94ef6dc8a28b85f7d01555c75c4153de9ba70c9
|
|
4
|
+
data.tar.gz: 28c135959444fad3f1534dedaf66ab15a3a77f68c826f62bb7c03b7b308602c5
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: aa8dfa921b4dccd56b4b2f6ee72462581818ebf5c71147529fffd45c3c8b463ecec63d8263dd511a8be01875ca7efd856322189c1d077dc6c587f401f4329acb
|
|
7
|
+
data.tar.gz: 599ca220db2713d02327de03e789ed83b83ca96625bf7ce469853451669cccf71db97ee3ed8d188f3074c2693d46ff28175869c6bc1c621409ee729386515a87
|
data/.github/workflows/ci.yml
CHANGED
|
@@ -11,16 +11,20 @@ jobs:
|
|
|
11
11
|
fail-fast: false
|
|
12
12
|
matrix:
|
|
13
13
|
ruby:
|
|
14
|
-
- '2.7'
|
|
15
|
-
- '3.0'
|
|
16
14
|
- '3.1'
|
|
17
15
|
- '3.2'
|
|
18
16
|
- '3.3'
|
|
17
|
+
- '3.4'
|
|
19
18
|
gemfile:
|
|
20
|
-
- rails_6.0
|
|
21
|
-
- rails_6.1
|
|
22
|
-
- rails_7.0
|
|
23
19
|
- rails_7.1
|
|
20
|
+
- rails_7.2
|
|
21
|
+
- rails_8.0
|
|
22
|
+
- rails_8.1
|
|
23
|
+
exclude:
|
|
24
|
+
- ruby: '3.1'
|
|
25
|
+
gemfile: rails_8.0
|
|
26
|
+
- ruby: '3.1'
|
|
27
|
+
gemfile: rails_8.1
|
|
24
28
|
name: Run test with Ruby ${{ matrix.ruby }} and Gemfile ${{ matrix.gemfile }}
|
|
25
29
|
services:
|
|
26
30
|
mysql:
|
data/.gitignore
CHANGED
data/Appraisals
CHANGED
|
@@ -1,17 +1,17 @@
|
|
|
1
|
-
appraise 'rails-
|
|
2
|
-
gem 'rails', '~>
|
|
1
|
+
appraise 'rails-7.1' do
|
|
2
|
+
gem 'rails', '~> 7.1.0'
|
|
3
3
|
end
|
|
4
4
|
|
|
5
|
-
appraise 'rails-
|
|
6
|
-
gem 'rails', '~>
|
|
5
|
+
appraise 'rails-7.2' do
|
|
6
|
+
gem 'rails', '~> 7.2.0'
|
|
7
7
|
end
|
|
8
8
|
|
|
9
|
-
appraise 'rails-
|
|
10
|
-
gem 'rails', '~>
|
|
9
|
+
appraise 'rails-8.0' do
|
|
10
|
+
gem 'rails', '~> 8.0.0'
|
|
11
11
|
end
|
|
12
12
|
|
|
13
|
-
appraise 'rails-
|
|
14
|
-
gem 'rails', '~>
|
|
13
|
+
appraise 'rails-8.1' do
|
|
14
|
+
gem 'rails', '~> 8.1.0'
|
|
15
15
|
end
|
|
16
16
|
|
|
17
17
|
# vim: set ft=ruby:
|
data/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,16 @@
|
|
|
1
|
+
# 5.0.0 (2026-01-23)
|
|
2
|
+
- [Breaking change] Drop support for Ruby 3.0
|
|
3
|
+
- [Breaking change] Drop support for Rails 7.0
|
|
4
|
+
- Support Rails 8.1
|
|
5
|
+
- Fix version matching errors; Blouson::SensitiveQueryFilter::AbstractAdapterFilter was not loaded with Rails 8.0
|
|
6
|
+
|
|
7
|
+
# 4.0.0 (2025-02-04)
|
|
8
|
+
- [Breaking change] Drop support for arproxy v0. Please update >= v1
|
|
9
|
+
- [Breaking change] Drop support for Ruby 2.7
|
|
10
|
+
- [Breaking change] Drop support for Rails 6.0 & 6.1
|
|
11
|
+
- Support Ruby 3.4
|
|
12
|
+
- Support Rails 7.2 & 8.0
|
|
13
|
+
|
|
1
14
|
# 3.0.0 (2024-09-18)
|
|
2
15
|
- [Breaking change] Drop support for Ruby 2.6
|
|
3
16
|
- [Breaking change] Drop support for Rails 5.0, 5.1, and 5.2
|
data/blouson.gemspec
CHANGED
|
@@ -21,9 +21,9 @@ Gem::Specification.new do |spec|
|
|
|
21
21
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
|
22
22
|
spec.require_paths = ["lib"]
|
|
23
23
|
|
|
24
|
-
spec.add_dependency 'rails', '>=
|
|
24
|
+
spec.add_dependency 'rails', '>= 7.1.0'
|
|
25
25
|
|
|
26
|
-
spec.add_development_dependency 'arproxy'
|
|
26
|
+
spec.add_development_dependency 'arproxy', '>= 1.0.0'
|
|
27
27
|
spec.add_development_dependency 'mysql2'
|
|
28
28
|
spec.add_development_dependency 'pry'
|
|
29
29
|
spec.add_development_dependency 'sentry-raven'
|
data/lib/blouson/engine.rb
CHANGED
|
@@ -19,9 +19,15 @@ module Blouson
|
|
|
19
19
|
ActiveRecord::StatementInvalid.class_eval do
|
|
20
20
|
prepend Blouson::SensitiveQueryFilter::StatementInvalidErrorFilter
|
|
21
21
|
end
|
|
22
|
-
if
|
|
22
|
+
if ActiveRecord.gem_version >= Gem::Version.new('7.1') && defined?(Mysql2::Error)
|
|
23
23
|
ActiveRecord::ConnectionAdapters::AbstractAdapter.class_eval do
|
|
24
|
-
|
|
24
|
+
if ActiveRecord.gem_version >= Gem::Version.new('8.1')
|
|
25
|
+
prepend Blouson::SensitiveQueryFilter::AbstractAdapterFilter81
|
|
26
|
+
elsif ActiveRecord.gem_version >= Gem::Version.new('8.0')
|
|
27
|
+
prepend Blouson::SensitiveQueryFilter::AbstractAdapterFilter80
|
|
28
|
+
else
|
|
29
|
+
prepend Blouson::SensitiveQueryFilter::AbstractAdapterFilter71
|
|
30
|
+
end
|
|
25
31
|
end
|
|
26
32
|
end
|
|
27
33
|
end
|
|
@@ -26,17 +26,7 @@ module Blouson
|
|
|
26
26
|
end
|
|
27
27
|
end
|
|
28
28
|
|
|
29
|
-
|
|
30
|
-
# Rails >= 7.1
|
|
31
|
-
#
|
|
32
|
-
# - https://github.com/rails/rails/pull/48295
|
|
33
|
-
super(message, sql: sql, binds: binds, connection_pool: connection_pool)
|
|
34
|
-
else
|
|
35
|
-
# Rails >= 6.0
|
|
36
|
-
#
|
|
37
|
-
# - https://github.com/rails/rails/pull/34468
|
|
38
|
-
super(message, sql: sql, binds: binds)
|
|
39
|
-
end
|
|
29
|
+
super(message, sql:, binds:, connection_pool:)
|
|
40
30
|
end
|
|
41
31
|
|
|
42
32
|
def set_query(sql, binds)
|
|
@@ -62,9 +52,10 @@ module Blouson
|
|
|
62
52
|
end
|
|
63
53
|
end
|
|
64
54
|
|
|
65
|
-
module
|
|
55
|
+
module AbstractAdapterFilter71
|
|
56
|
+
# https://github.com/rails/rails/blob/v7.1.0/activerecord/lib/active_record/connection_adapters/abstract_adapter.rb#L1133
|
|
66
57
|
def log(sql, name = "SQL", binds = [], type_casted_binds = [], statement_name = nil, async: false, &block)
|
|
67
|
-
super(sql, name, binds, type_casted_binds, statement_name, async
|
|
58
|
+
super(sql, name, binds, type_casted_binds, statement_name, async:, &block)
|
|
68
59
|
rescue ActiveRecord::RecordNotUnique, Mysql2::Error => ex
|
|
69
60
|
if ex.cause.is_a?(Mysql2::Error)
|
|
70
61
|
ex.cause.extend(Mysql2Filter)
|
|
@@ -73,7 +64,36 @@ module Blouson
|
|
|
73
64
|
end
|
|
74
65
|
raise ex
|
|
75
66
|
end
|
|
67
|
+
private :log
|
|
68
|
+
end
|
|
76
69
|
|
|
70
|
+
module AbstractAdapterFilter80
|
|
71
|
+
# https://github.com/rails/rails/blob/v8.0.0/activerecord/lib/active_record/connection_adapters/abstract_adapter.rb#L1128
|
|
72
|
+
def log(sql, name = "SQL", binds = [], type_casted_binds = [], async: false, &block)
|
|
73
|
+
super(sql, name, binds, type_casted_binds, async:, &block)
|
|
74
|
+
rescue ActiveRecord::RecordNotUnique, Mysql2::Error => ex
|
|
75
|
+
if ex.cause.is_a?(Mysql2::Error)
|
|
76
|
+
ex.cause.extend(Mysql2Filter)
|
|
77
|
+
elsif $!.is_a?(Mysql2::Error)
|
|
78
|
+
$!.extend(Mysql2Filter)
|
|
79
|
+
end
|
|
80
|
+
raise ex
|
|
81
|
+
end
|
|
82
|
+
private :log
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
module AbstractAdapterFilter81
|
|
86
|
+
# https://github.com/rails/rails/blob/v8.1.0/activerecord/lib/active_record/connection_adapters/abstract_adapter.rb#L1200
|
|
87
|
+
def log(sql, name = "SQL", binds = [], type_casted_binds = [], async: false, allow_retry: false, &block)
|
|
88
|
+
super(sql, name, binds, type_casted_binds, async:, allow_retry:, &block)
|
|
89
|
+
rescue ActiveRecord::RecordNotUnique, Mysql2::Error => ex
|
|
90
|
+
if ex.cause.is_a?(Mysql2::Error)
|
|
91
|
+
ex.cause.extend(Mysql2Filter)
|
|
92
|
+
elsif $!.is_a?(Mysql2::Error)
|
|
93
|
+
$!.extend(Mysql2Filter)
|
|
94
|
+
end
|
|
95
|
+
raise ex
|
|
96
|
+
end
|
|
77
97
|
private :log
|
|
78
98
|
end
|
|
79
99
|
end
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
module Blouson
|
|
2
|
-
class SensitiveTableQueryLogSilencer < Arproxy::
|
|
3
|
-
def execute(sql,
|
|
2
|
+
class SensitiveTableQueryLogSilencer < Arproxy::Proxy
|
|
3
|
+
def execute(sql, context)
|
|
4
4
|
if !Rails.logger.debug? || !(Blouson::SENSITIVE_TABLE_REGEXP === sql)
|
|
5
|
-
return super(sql,
|
|
5
|
+
return super(sql, context)
|
|
6
6
|
end
|
|
7
7
|
|
|
8
8
|
ActiveRecord::Base.logger.silence(Logger::INFO) do
|
|
9
9
|
Rails.logger.info " [Blouson::SensitiveTableQueryLogSilencer] SQL Log is skipped for sensitive table"
|
|
10
|
-
super(sql,
|
|
10
|
+
super(sql, context)
|
|
11
11
|
end
|
|
12
12
|
end
|
|
13
13
|
end
|
|
@@ -1,13 +1,7 @@
|
|
|
1
1
|
module Blouson
|
|
2
2
|
class SentryParameterFilter
|
|
3
3
|
def initialize(filters, header_filters = [])
|
|
4
|
-
|
|
5
|
-
parameter_filter_klass = if defined?(ActiveSupport::ParameterFilter)
|
|
6
|
-
ActiveSupport::ParameterFilter
|
|
7
|
-
else
|
|
8
|
-
ActionDispatch::Http::ParameterFilter
|
|
9
|
-
end
|
|
10
|
-
@parameter_filter = parameter_filter_klass.new(filters)
|
|
4
|
+
@parameter_filter = ActiveSupport::ParameterFilter.new(filters)
|
|
11
5
|
@header_filters = header_filters.map(&:downcase)
|
|
12
6
|
end
|
|
13
7
|
|
data/lib/blouson/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,14 +1,13 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: blouson
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version:
|
|
4
|
+
version: 5.0.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Cookpad Inc.
|
|
8
|
-
autorequire:
|
|
9
8
|
bindir: exe
|
|
10
9
|
cert_chain: []
|
|
11
|
-
date:
|
|
10
|
+
date: 1980-01-02 00:00:00.000000000 Z
|
|
12
11
|
dependencies:
|
|
13
12
|
- !ruby/object:Gem::Dependency
|
|
14
13
|
name: rails
|
|
@@ -16,28 +15,28 @@ dependencies:
|
|
|
16
15
|
requirements:
|
|
17
16
|
- - ">="
|
|
18
17
|
- !ruby/object:Gem::Version
|
|
19
|
-
version:
|
|
18
|
+
version: 7.1.0
|
|
20
19
|
type: :runtime
|
|
21
20
|
prerelease: false
|
|
22
21
|
version_requirements: !ruby/object:Gem::Requirement
|
|
23
22
|
requirements:
|
|
24
23
|
- - ">="
|
|
25
24
|
- !ruby/object:Gem::Version
|
|
26
|
-
version:
|
|
25
|
+
version: 7.1.0
|
|
27
26
|
- !ruby/object:Gem::Dependency
|
|
28
27
|
name: arproxy
|
|
29
28
|
requirement: !ruby/object:Gem::Requirement
|
|
30
29
|
requirements:
|
|
31
30
|
- - ">="
|
|
32
31
|
- !ruby/object:Gem::Version
|
|
33
|
-
version:
|
|
32
|
+
version: 1.0.0
|
|
34
33
|
type: :development
|
|
35
34
|
prerelease: false
|
|
36
35
|
version_requirements: !ruby/object:Gem::Requirement
|
|
37
36
|
requirements:
|
|
38
37
|
- - ">="
|
|
39
38
|
- !ruby/object:Gem::Version
|
|
40
|
-
version:
|
|
39
|
+
version: 1.0.0
|
|
41
40
|
- !ruby/object:Gem::Dependency
|
|
42
41
|
name: mysql2
|
|
43
42
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -169,10 +168,10 @@ files:
|
|
|
169
168
|
- bin/console
|
|
170
169
|
- bin/setup
|
|
171
170
|
- blouson.gemspec
|
|
172
|
-
- gemfiles/rails_6.0.gemfile
|
|
173
|
-
- gemfiles/rails_6.1.gemfile
|
|
174
|
-
- gemfiles/rails_7.0.gemfile
|
|
175
171
|
- gemfiles/rails_7.1.gemfile
|
|
172
|
+
- gemfiles/rails_7.2.gemfile
|
|
173
|
+
- gemfiles/rails_8.0.gemfile
|
|
174
|
+
- gemfiles/rails_8.1.gemfile
|
|
176
175
|
- lib/blouson.rb
|
|
177
176
|
- lib/blouson/engine.rb
|
|
178
177
|
- lib/blouson/raven_parameter_filter_processor.rb
|
|
@@ -187,7 +186,6 @@ homepage: https://github.com/cookpad/blouson
|
|
|
187
186
|
licenses:
|
|
188
187
|
- MIT
|
|
189
188
|
metadata: {}
|
|
190
|
-
post_install_message:
|
|
191
189
|
rdoc_options: []
|
|
192
190
|
require_paths:
|
|
193
191
|
- lib
|
|
@@ -202,8 +200,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
202
200
|
- !ruby/object:Gem::Version
|
|
203
201
|
version: '0'
|
|
204
202
|
requirements: []
|
|
205
|
-
rubygems_version:
|
|
206
|
-
signing_key:
|
|
203
|
+
rubygems_version: 4.0.3
|
|
207
204
|
specification_version: 4
|
|
208
205
|
summary: Filter tools to mask sensitive data in various logs
|
|
209
206
|
test_files: []
|