activerecord-pedantmysql2-adapter 1.3.0 → 1.4.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: 5255cb91c19fa45adb1a277a95d8e9113e6f52cd5c76c418bc79025a16724bc2
4
- data.tar.gz: 897ba4f42c2e58edff7b6a159d7007c273560a025c813099822c432576ffe473
3
+ metadata.gz: edb5734c15054a4f6e3d985cad3bf2932cb923d5c3c9f9daa0e846dd43a587a6
4
+ data.tar.gz: 70c44fec9acff6556b13729d54e2004bbe98653975d11b69654bb99b3ffd9d62
5
5
  SHA512:
6
- metadata.gz: 5a7c36b9b2d2d94b813bd3992878fb97c6ef5052285e0c29f53fcbfe3623047d7c00e0cd5776e013c5b2079a7e114603bc0d8a3dcc0a8ac70a1e0ab11201c754
7
- data.tar.gz: 3f25aa8d59e4adc8d5fd6f66905740ce3af5fd55a4373502e7ba5f66a0a39384d4749ebb2e891fd3dffb2913e203c05452ea84e7281a81d1a949bb99da182c04
6
+ metadata.gz: f21453993e5cbe025c65e876de54bedb53082db01ff5551da0e17b902faa48f37fff20cd3e49ec5920038a835339d4e36de0d9570bfe925d4e5577c14c402862
7
+ data.tar.gz: 830f4252036dd996c2ce76dd6d8f624d324854c27382bc706a8efa2c85c5d080b0dd8f187a4c3654f8e8932128e3f30ecf183573554f181bdcd9ff580e3a9292
@@ -8,11 +8,8 @@ jobs:
8
8
  name: Ruby ${{ matrix.ruby }} / Active Record ${{ matrix.activerecord }}
9
9
  strategy:
10
10
  matrix:
11
- ruby: ['2.6', '2.7', '3.0']
12
- activerecord: ['6.0', '6.1', 'edge']
13
- exclude:
14
- - ruby: '2.6'
15
- activerecord: 'edge'
11
+ ruby: ['2.7', '3.0', '3.1']
12
+ activerecord: ['6.1', '7.0', 'edge']
16
13
  env:
17
14
  BUNDLE_GEMFILE: gemfiles/Gemfile.activerecord-${{ matrix.activerecord }}
18
15
  steps:
@@ -24,9 +24,9 @@ Gem::Specification.new do |spec|
24
24
 
25
25
  spec.add_dependency 'activerecord', '>= 6.0'
26
26
  spec.add_dependency 'mysql2', '>= 0.3.12'
27
+
27
28
  spec.add_development_dependency 'bundler'
28
29
  spec.add_development_dependency 'rake'
29
30
  spec.add_development_dependency 'rspec', '>= 3.0'
30
31
  spec.add_development_dependency 'rspec-its'
31
- spec.add_development_dependency 'coveralls'
32
32
  end
@@ -1,5 +1,5 @@
1
1
  source 'https://rubygems.org'
2
2
  gemspec path: '..'
3
3
 
4
- gem 'activerecord', '~> 6.0.0'
4
+ gem 'activerecord', '~> 7.0.0'
5
5
  gem 'mysql2'
@@ -76,10 +76,13 @@ class ActiveRecord::ConnectionAdapters::PedantMysql2Adapter < ActiveRecord::Conn
76
76
  private
77
77
 
78
78
  def log_warnings(sql)
79
- return unless @connection.warning_count > 0
79
+ # support for https://github.com/rails/rails/commit/d86fd6415c0dfce6fadb77e74696cf728e5eb76b
80
+ connection = instance_variable_defined?(:@raw_connection) ? @raw_connection : @connection
80
81
 
81
- @affected_rows_before_logging = @connection.affected_rows
82
- result = @connection.query('SHOW WARNINGS')
82
+ return unless connection.warning_count > 0
83
+
84
+ @affected_rows_before_logging = connection.affected_rows
85
+ result = connection.query('SHOW WARNINGS')
83
86
 
84
87
  result.each do |level, code, message|
85
88
  warning = MysqlWarning.new(message, code, level, sql)
@@ -1,3 +1,3 @@
1
1
  module PedantMysql2
2
- VERSION = '1.3.0'
2
+ VERSION = '1.4.0'
3
3
  end
data/lib/pedant_mysql2.rb CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module PedantMysql2
2
4
  class << self
3
5
  def capture_warnings
@@ -46,11 +48,11 @@ module PedantMysql2
46
48
  end
47
49
 
48
50
  def ignored?(warning)
49
- whitelist.any? { |matcher| warning.message.match?(matcher) } || drop_table_warning(warning)
51
+ note_warning?(warning) || whitelist.any? { |matcher| warning.message.match?(matcher) }
50
52
  end
51
53
 
52
- def drop_table_warning(warning)
53
- warning.query.match?(/\ADROP TABLE IF EXISTS/) || warning.message.match?(/\AUnknown table/)
54
+ def note_warning?(warning)
55
+ warning.level == "Note"
54
56
  end
55
57
 
56
58
  def setup_capture
data/spec/adapter_spec.rb CHANGED
@@ -8,7 +8,6 @@ describe PedantMysql2 do
8
8
  PedantMysql2.raise_warnings!
9
9
  PedantMysql2.instance_variable_set(:@whitelist, nil)
10
10
  PedantMysql2.ignore(/They will be merged with strict mode in a future release/)
11
- connection.execute('SET SESSION binlog_format = "STATEMENT"')
12
11
  if connection.execute('SHOW TABLES LIKE "comment"').size == 0
13
12
  connection.execute('CREATE TABLE comment (id int)')
14
13
  end
@@ -43,12 +42,18 @@ describe PedantMysql2 do
43
42
  }.to raise_error(MysqlWarning, "Truncated incorrect DOUBLE value: 'foo'")
44
43
  end
45
44
 
46
- it 'does not raise when warning warns about unexisting table' do
45
+ it 'does not raise when warning is a Note level warning e.g. unexisting table' do
47
46
  expect {
48
47
  execute_with_warning('DROP TABLE IF EXISTS `example_table`')
49
48
  }.to_not raise_error
50
49
  end
51
50
 
51
+ it 'does not raise when warning is a Note level warning e.g. EXPLAIN queries' do
52
+ expect {
53
+ execute_with_warning('EXPLAIN SELECT 1')
54
+ }.to_not raise_error
55
+ end
56
+
52
57
  it 'can have a whitelist of warnings' do
53
58
  PedantMysql2.ignore(/Truncated incorrect DOUBLE value/i)
54
59
  expect {
data/spec/spec_helper.rb CHANGED
@@ -2,14 +2,6 @@ lib = File.expand_path('../lib', __FILE__)
2
2
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
3
3
 
4
4
  require 'rspec/its'
5
- require 'simplecov'
6
- require 'coveralls'
7
- SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter.new([
8
- SimpleCov::Formatter::HTMLFormatter,
9
- Coveralls::SimpleCov::Formatter
10
- ])
11
- SimpleCov.start
12
-
13
5
  require 'activerecord-pedantmysql2-adapter'
14
6
 
15
7
  module TestSupport
@@ -18,7 +10,7 @@ module TestSupport
18
10
  'database' => 'pedant_mysql2_test',
19
11
  'username' => 'root',
20
12
  'password' => ENV['CI'] ? 'root' : nil,
21
- 'encoding' => 'utf8',
13
+ 'encoding' => 'utf8mb4',
22
14
  'host' => 'localhost',
23
15
  'strict' => false,
24
16
  'pool' => 5,
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: activerecord-pedantmysql2-adapter
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.0
4
+ version: 1.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jean Boussier
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-02-09 00:00:00.000000000 Z
11
+ date: 2023-01-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord
@@ -94,20 +94,6 @@ dependencies:
94
94
  - - ">="
95
95
  - !ruby/object:Gem::Version
96
96
  version: '0'
97
- - !ruby/object:Gem::Dependency
98
- name: coveralls
99
- requirement: !ruby/object:Gem::Requirement
100
- requirements:
101
- - - ">="
102
- - !ruby/object:Gem::Version
103
- version: '0'
104
- type: :development
105
- prerelease: false
106
- version_requirements: !ruby/object:Gem::Requirement
107
- requirements:
108
- - - ">="
109
- - !ruby/object:Gem::Version
110
- version: '0'
111
97
  description: Gives a hook on MySQL warnings that allow you to either raise or log
112
98
  them.
113
99
  email:
@@ -124,8 +110,8 @@ files:
124
110
  - README.md
125
111
  - Rakefile
126
112
  - activerecord-pedantmysql2-adapter.gemspec
127
- - gemfiles/Gemfile.activerecord-6.0
128
113
  - gemfiles/Gemfile.activerecord-6.1
114
+ - gemfiles/Gemfile.activerecord-7.0
129
115
  - gemfiles/Gemfile.activerecord-edge
130
116
  - lib/active_record/connection_adapters/pedant_mysql2_adapter.rb
131
117
  - lib/activerecord-pedantmysql2-adapter.rb
@@ -155,7 +141,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
155
141
  - !ruby/object:Gem::Version
156
142
  version: '0'
157
143
  requirements: []
158
- rubygems_version: 3.0.3
144
+ rubygems_version: 3.3.3
159
145
  signing_key:
160
146
  specification_version: 4
161
147
  summary: ActiveRecord adapter for MySQL that report warnings.