blouson 2.0.0 → 3.0.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 2b25599e819a53e78883ffd4e743eb30202e9e2fb3f8c7b040d89b538fae446f
4
- data.tar.gz: 36685c9343cc6db285668bb8bfdd2d7d8ec29c15c621de8005551f6907ca0250
3
+ metadata.gz: 840e5b805a31017d60d1652c29a478e2b356b7b37a573bb74f345e9dcde7c2ac
4
+ data.tar.gz: c7dd1bfac7e80734459faa5429d17eef64d73c04a034f18bfdb5126530b155da
5
5
  SHA512:
6
- metadata.gz: ade492f5a1994bfed0f02412d98c0e996baa827bcc65ac4256bda7f851e6814d6f9c017e13da5013d7e0c9821e83859f3870ad82d5f7c2d4ac59d0aac024d01f
7
- data.tar.gz: 3e995584ca65d2498bdcff2d4c6c5bc8cd3d06beadc22569e808408af634577e4d94bd70c18f0613b458e1b6b1466e7807a18bc52aacbce573389a5e4372fe52
6
+ metadata.gz: a42792b547527c0a2406a9d2bc206ef8860df465e879685f56202170559e2ebfc39da76837d7abf53a08e13bdbaa74a3def88bdd3f57e6daaab78f4d3d23a3ab
7
+ data.tar.gz: 231df2e6c0798617606195afaf2812c09e6de32ee9109e93ee0aca9e4e35c7e14be08b8a288238104ce525f22621a9897fb4f7c1d084aba804ab2cc0daf8def7
@@ -11,38 +11,20 @@ jobs:
11
11
  fail-fast: false
12
12
  matrix:
13
13
  ruby:
14
- - '2.6'
15
14
  - '2.7'
16
15
  - '3.0'
17
16
  - '3.1'
17
+ - '3.2'
18
+ - '3.3'
18
19
  gemfile:
19
- - rails_5.0
20
- - rails_5.1
21
- - rails_5.2
22
20
  - rails_6.0
23
21
  - rails_6.1
24
22
  - rails_7.0
25
- exclude:
26
- # Ruby >= 3.0 is supported since Rails 6.0
27
- - ruby: '3.0'
28
- gemfile: rails_5.0
29
- - ruby: '3.0'
30
- gemfile: rails_5.1
31
- - ruby: '3.0'
32
- gemfile: rails_5.2
33
- - ruby: '3.1'
34
- gemfile: rails_5.0
35
- - ruby: '3.1'
36
- gemfile: rails_5.1
37
- - ruby: '3.1'
38
- gemfile: rails_5.2
39
- # Rails 7.0 supports Ruby >= 2.7 only
40
- - ruby: '2.6'
41
- gemfile: rails_7.0
23
+ - rails_7.1
42
24
  name: Run test with Ruby ${{ matrix.ruby }} and Gemfile ${{ matrix.gemfile }}
43
25
  services:
44
26
  mysql:
45
- image: mysql:5.7
27
+ image: mysql:8.4
46
28
  env:
47
29
  MYSQL_ALLOW_EMPTY_PASSWORD: '1'
48
30
  MYSQL_DATABASE: blouson
@@ -56,7 +38,7 @@ jobs:
56
38
  env:
57
39
  BUNDLE_GEMFILE: ${{ github.workspace }}/gemfiles/${{ matrix.gemfile }}.gemfile
58
40
  steps:
59
- - uses: actions/checkout@v3
41
+ - uses: actions/checkout@v4
60
42
  - uses: ruby/setup-ruby@v1
61
43
  with:
62
44
  ruby-version: ${{ matrix.ruby }}
data/.gitignore CHANGED
@@ -1,6 +1,7 @@
1
1
  /.bundle/
2
2
  /.yardoc
3
3
  /Gemfile.lock
4
+ /gemfiles/*.gemfile.lock
4
5
  /_yardoc/
5
6
  /coverage/
6
7
  /doc/
data/Appraisals CHANGED
@@ -1,15 +1,3 @@
1
- appraise 'rails-5.0' do
2
- gem 'rails', '~> 5.0.0'
3
- end
4
-
5
- appraise 'rails-5.1' do
6
- gem 'rails', '~> 5.1.0'
7
- end
8
-
9
- appraise 'rails-5.2' do
10
- gem 'rails', '~> 5.2.0'
11
- end
12
-
13
1
  appraise 'rails-6.0' do
14
2
  gem 'rails', '~> 6.0.0'
15
3
  end
@@ -22,4 +10,8 @@ appraise 'rails-7.0' do
22
10
  gem 'rails', '~> 7.0.0'
23
11
  end
24
12
 
13
+ appraise 'rails-7.1' do
14
+ gem 'rails', '~> 7.1.0'
15
+ end
16
+
25
17
  # vim: set ft=ruby:
data/CHANGELOG.md CHANGED
@@ -1,3 +1,13 @@
1
+ # 3.0.0 (2024-09-18)
2
+ - [Breaking change] Drop support for Ruby 2.6
3
+ - [Breaking change] Drop support for Rails 5.0, 5.1, and 5.2
4
+ - Support Ruby 3.2 and 3.3
5
+ - Support Rails 7.1
6
+ - [Breaking change] blouson/sensitive_params_silener is renamed to blouson/sensitive_params_silencer
7
+ - Use `Rails.logger.debug?` for loggers other than the default Logger class
8
+ - Run tests with MySQL 8.4 instead of 5.7
9
+ - Ignore lockfiles for Appraisal for the development
10
+
1
11
  # 2.0.0 (2022-05-23)
2
12
  - Support parameter filter for `sentry-ruby` gem
3
13
  - [Breaking change] Drop dependency of `sentry-raven` gem
data/blouson.gemspec CHANGED
@@ -21,7 +21,7 @@ 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', '>= 4.0.0'
24
+ spec.add_dependency 'rails', '>= 6.0.0'
25
25
 
26
26
  spec.add_development_dependency 'arproxy'
27
27
  spec.add_development_dependency 'mysql2'
@@ -2,6 +2,6 @@
2
2
 
3
3
  source "https://rubygems.org"
4
4
 
5
- gem "rails", "~> 5.0.0"
5
+ gem "rails", "~> 7.1.0"
6
6
 
7
7
  gemspec path: "../"
@@ -6,7 +6,7 @@ module Blouson
6
6
 
7
7
  # We have to prevent logging sensitive data in SQL if production mode and logger level is debug
8
8
  initializer 'blouson.load_helpers' do |app|
9
- if !Rails.env.development? && Rails.logger.level == Logger::DEBUG
9
+ if !Rails.env.development? && Rails.logger.debug?
10
10
  ActiveSupport.on_load(:action_controller) do
11
11
  around_action Blouson::SensitiveParamsSilencer
12
12
  end
@@ -19,6 +19,11 @@ module Blouson
19
19
  ActiveRecord::StatementInvalid.class_eval do
20
20
  prepend Blouson::SensitiveQueryFilter::StatementInvalidErrorFilter
21
21
  end
22
+ if Rails::VERSION::MAJOR >= 7 && Rails::VERSION::MINOR >= 1 && defined?(Mysql2::Error)
23
+ ActiveRecord::ConnectionAdapters::AbstractAdapter.class_eval do
24
+ prepend Blouson::SensitiveQueryFilter::AbstractAdapterFilter
25
+ end
26
+ end
22
27
  end
23
28
  end
24
29
  end
@@ -15,33 +15,43 @@ module Blouson
15
15
  end
16
16
 
17
17
  module StatementInvalidErrorFilter
18
- def initialize(message = nil, original_exception = nil, sql: nil, binds: nil)
19
- if SensitiveQueryFilter.contain_sensitive_query?(message) || (SensitiveQueryFilter.contain_sensitive_query?(sql))
18
+ def initialize(message = nil, sql: nil, binds: nil, connection_pool: nil)
19
+ if SensitiveQueryFilter.contain_sensitive_query?(message) || SensitiveQueryFilter.contain_sensitive_query?(sql)
20
20
  message = SensitiveQueryFilter.filter_sensitive_words(message) if message
21
21
  sql = SensitiveQueryFilter.filter_sensitive_words(sql) if sql
22
22
  if defined?(Mysql2::Error)
23
- if original_exception.is_a?(Mysql2::Error)
24
- original_exception.extend(Mysql2Filter)
25
- elsif $!.is_a?(Mysql2::Error)
23
+ if $!.is_a?(Mysql2::Error)
26
24
  $!.extend(Mysql2Filter)
27
25
  end
28
26
  end
29
27
  end
30
28
 
31
- if original_exception
32
- # Rails < 5.0
33
- super(message, original_exception)
34
- elsif sql
29
+ if connection_pool
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
35
  # Rails >= 6.0
36
36
  #
37
37
  # - https://github.com/rails/rails/pull/34468
38
38
  super(message, sql: sql, binds: binds)
39
+ end
40
+ end
41
+
42
+ def set_query(sql, binds)
43
+ if SensitiveQueryFilter.contain_sensitive_query?(sql)
44
+ super(SensitiveQueryFilter.filter_sensitive_words(sql), binds)
39
45
  else
40
- # Rails >= 5.0
41
- #
42
- # - https://github.com/rails/rails/pull/18774
43
- # - https://github.com/rails/rails/pull/27503
44
- super(message)
46
+ super(sql, binds)
47
+ end
48
+ end
49
+
50
+ def to_s
51
+ if SensitiveQueryFilter.contain_sensitive_query?(sql)
52
+ SensitiveQueryFilter.filter_sensitive_words(super)
53
+ else
54
+ super
45
55
  end
46
56
  end
47
57
  end
@@ -51,5 +61,20 @@ module Blouson
51
61
  SensitiveQueryFilter.filter_sensitive_words(super)
52
62
  end
53
63
  end
64
+
65
+ module AbstractAdapterFilter
66
+ 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: false, &block)
68
+ rescue ActiveRecord::RecordNotUnique, Mysql2::Error => ex
69
+ if ex.cause.is_a?(Mysql2::Error)
70
+ ex.cause.extend(Mysql2Filter)
71
+ elsif $!.is_a?(Mysql2::Error)
72
+ $!.extend(Mysql2Filter)
73
+ end
74
+ raise ex
75
+ end
76
+
77
+ private :log
78
+ end
54
79
  end
55
80
  end
@@ -1,7 +1,7 @@
1
1
  module Blouson
2
2
  class SensitiveTableQueryLogSilencer < Arproxy::Base
3
3
  def execute(sql, name=nil, **kwargs)
4
- if Rails.logger.level != Logger::DEBUG || !(Blouson::SENSITIVE_TABLE_REGEXP === sql)
4
+ if !Rails.logger.debug? || !(Blouson::SENSITIVE_TABLE_REGEXP === sql)
5
5
  return super(sql, name, **kwargs)
6
6
  end
7
7
 
@@ -1,3 +1,3 @@
1
1
  module Blouson
2
- VERSION = "2.0.0"
2
+ VERSION = "3.0.0"
3
3
  end
data/lib/blouson.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  require "blouson/version"
2
2
 
3
- require 'blouson/sensitive_params_silener'
3
+ require 'blouson/sensitive_params_silencer'
4
4
  require 'blouson/sensitive_query_filter'
5
5
  require 'blouson/sensitive_mail_log_filter'
6
6
  require 'blouson/engine'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: blouson
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.0
4
+ version: 3.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Cookpad Inc.
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-05-23 00:00:00.000000000 Z
11
+ date: 2024-09-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: 4.0.0
19
+ version: 6.0.0
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
- version: 4.0.0
26
+ version: 6.0.0
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: arproxy
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -169,17 +169,15 @@ files:
169
169
  - bin/console
170
170
  - bin/setup
171
171
  - blouson.gemspec
172
- - gemfiles/rails_5.0.gemfile
173
- - gemfiles/rails_5.1.gemfile
174
- - gemfiles/rails_5.2.gemfile
175
172
  - gemfiles/rails_6.0.gemfile
176
173
  - gemfiles/rails_6.1.gemfile
177
174
  - gemfiles/rails_7.0.gemfile
175
+ - gemfiles/rails_7.1.gemfile
178
176
  - lib/blouson.rb
179
177
  - lib/blouson/engine.rb
180
178
  - lib/blouson/raven_parameter_filter_processor.rb
181
179
  - lib/blouson/sensitive_mail_log_filter.rb
182
- - lib/blouson/sensitive_params_silener.rb
180
+ - lib/blouson/sensitive_params_silencer.rb
183
181
  - lib/blouson/sensitive_query_filter.rb
184
182
  - lib/blouson/sensitive_table_query_log_silencer.rb
185
183
  - lib/blouson/sentry_parameter_filter.rb
@@ -204,7 +202,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
204
202
  - !ruby/object:Gem::Version
205
203
  version: '0'
206
204
  requirements: []
207
- rubygems_version: 3.2.32
205
+ rubygems_version: 3.5.11
208
206
  signing_key:
209
207
  specification_version: 4
210
208
  summary: Filter tools to mask sensitive data in various logs
@@ -1,7 +0,0 @@
1
- # This file was generated by Appraisal
2
-
3
- source "https://rubygems.org"
4
-
5
- gem "rails", "~> 5.1.0"
6
-
7
- gemspec path: "../"
@@ -1,7 +0,0 @@
1
- # This file was generated by Appraisal
2
-
3
- source "https://rubygems.org"
4
-
5
- gem "rails", "~> 5.2.0"
6
-
7
- gemspec path: "../"