activerecord-debug_errors 0.1.1 → 0.1.2

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
2
  SHA256:
3
- metadata.gz: 818e63536312d27e39718e58eb6ec33827cd703e245f284c806e53d4dfcc86dc
4
- data.tar.gz: b177c2624722f1a5bd01f5378c252c6344d134679704f2e816ccbf2b184732f7
3
+ metadata.gz: da91d2ad33b30bd8ac659196f3e45ffbb216718202955b9edec862eeb3657595
4
+ data.tar.gz: 5cff1fcd45f2728651aa0be40858d17491f558a6530d8d71ef1352cb70efd6e8
5
5
  SHA512:
6
- metadata.gz: 2198d3f0a7a61a1d71f1c171c8fa9aaa1a4a7f650ae40fb69c39bf95f37ed83aa3d0c125b2beaa2032cac1a7ec05938607448b3266a399e79bd774476dd69610
7
- data.tar.gz: d6a9a8df96bff2a512468e3c56ce07099a2eee6818a9adef13422d832bb1b22cb2dadc0450b960f0ed244d6d21223453e3fd957fac67816fc4c0ba1770de0943
6
+ metadata.gz: 7a982545c7b10fffd01a3ffd3f246f0a0af53a31f9b1eacbe64a18861963c2bce24c6683af8eefae1a8f12e3b66fc26d09b15deef54ac17c3c1ccbfac01e4109
7
+ data.tar.gz: 2ee8488020bda34d7d60dca2768ce46c15dce41208651174f9bdc8d17c77b94e6d4d26d5171981eaa718e31753839fd40c0aa58a9ba2f6015982a7845e1059bd
@@ -15,6 +15,16 @@ jobs:
15
15
  ruby-version:
16
16
  - '2.6'
17
17
  - '2.7'
18
+ - '3.0'
19
+ - '3.1'
20
+ activerecord-version:
21
+ - '6'
22
+ - '7'
23
+ exclude:
24
+ - # activerecord-7 doesn't support Ruby 2.6
25
+ ruby-version: '2.6'
26
+ activerecord-version: '7'
27
+
18
28
  services:
19
29
  mysql:
20
30
  image: mysql:5.7
@@ -28,18 +38,17 @@ jobs:
28
38
  env:
29
39
  MYSQL_ROOT_PASSWORD: password
30
40
  MYSQL_DATABASE: test
41
+
42
+ env:
43
+ BUNDLE_GEMFILE: gemfiles/activerecord_${{ matrix.activerecord-version }}.gemfile
44
+
31
45
  steps:
32
46
  - uses: actions/checkout@v2
33
47
  - name: Set up Ruby ${{ matrix.ruby-version }}
34
- uses: actions/setup-ruby@v1
48
+ uses: ruby/setup-ruby@v1
35
49
  with:
36
50
  ruby-version: ${{ matrix.ruby-version }}
37
- - uses: actions/cache@v2
38
- with:
39
- path: vendor/bundle
40
- key: ${{ runner.os }}-gems-${{ matrix.ruby-version }}-${{ hashFiles('activerecord-debug_errors.gemspec', '**/Gemfile') }}
41
- restore-keys: |
42
- ${{ runner.os }}-gems-${{ matrix.ruby-version }}-
51
+ bundler-cache: true
43
52
  - name: Build and test with Rake
44
53
  run: |
45
54
  bundle config path vendor/bundle
data/.gitignore CHANGED
@@ -7,5 +7,7 @@
7
7
  /spec/reports/
8
8
  /tmp/
9
9
 
10
+ Gemfile.lock
11
+
10
12
  # rspec failure tracking
11
13
  .rspec_status
data/Gemfile CHANGED
@@ -3,5 +3,6 @@ source "https://rubygems.org"
3
3
  # Specify your gem's dependencies in activerecord-debug_errors.gemspec
4
4
  gemspec
5
5
 
6
+ gem "mysql2"
6
7
  gem "rake", "~> 12.0"
7
8
  gem "rspec", "~> 3.0"
data/README.md CHANGED
@@ -118,6 +118,8 @@ Record lock, heap no 2 PHYSICAL RECORD: n_fields 2; compact format; info bits 0
118
118
  *** WE ROLL BACK TRANSACTION (2)
119
119
  ```
120
120
 
121
+ Note that the user requires the PROCESS priviledge to collect the information.
122
+
121
123
  ### ActiveRecord::ConnectionTimeoutError
122
124
 
123
125
  When `ActiveRecord::ConnectionTimeoutError` occurs, you can see the information of connection owners (threads):
@@ -22,6 +22,5 @@ Gem::Specification.new do |spec|
22
22
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
23
23
  spec.require_paths = ["lib"]
24
24
 
25
- spec.add_runtime_dependency "activerecord", ">= 6", "< 7"
26
- spec.add_development_dependency "mysql2"
25
+ spec.add_runtime_dependency "activerecord", ">= 6", "< 8"
27
26
  end
@@ -0,0 +1,2 @@
1
+ eval_gemfile("../Gemfile")
2
+ gem "activerecord", "~> 6.0"
@@ -0,0 +1,2 @@
1
+ eval_gemfile("../Gemfile")
2
+ gem "activerecord", "~> 7.0"
@@ -1,10 +1,18 @@
1
1
  # frozen_string_literal: true
2
+ require "active_record/connection_adapters/abstract_mysql_adapter"
2
3
 
3
4
  module ActiveRecord
4
5
  module DebugErrors
5
6
  module DisplayMySQLInformation
6
- def execute(*args)
7
- super
7
+ # Rails 7 or later never calls ActiveRecord::ConnectionAdapters::AbstractMysqlAdapter#execute
8
+ # cf. https://github.com/rails/rails/pull/43097
9
+ if ActiveRecord::ConnectionAdapters::AbstractMysqlAdapter.private_method_defined?(:raw_execute)
10
+ method_name = :raw_execute
11
+ else
12
+ method_name = :execute
13
+ end
14
+ define_method(method_name) do |*args, **kwargs|
15
+ super(*args, **kwargs)
8
16
  rescue ActiveRecord::Deadlocked
9
17
  if logger
10
18
  logger.error "ActiveRecord::Deadlocked occurred:"
@@ -19,6 +27,7 @@ module ActiveRecord
19
27
  end
20
28
  raise
21
29
  end
30
+ private method_name if method_name == :raw_execute
22
31
 
23
32
  private
24
33
 
@@ -40,7 +49,14 @@ module ActiveRecord
40
49
  end
41
50
 
42
51
  def display_innodb_status_section(section_name)
43
- status = ActiveRecord::Base.connection.execute("SHOW ENGINE INNODB STATUS").first[2]
52
+ sql = "SHOW ENGINE INNODB STATUS"
53
+ status = nil
54
+ begin
55
+ status = ActiveRecord::Base.connection.execute(sql).first[2]
56
+ rescue ActiveRecord::StatementInvalid => e
57
+ logger.error "Failed to execute '#{sql}': #{e.message}"
58
+ return
59
+ end
44
60
 
45
61
  prev_line = nil
46
62
  in_deadlock_section = false
@@ -64,7 +80,6 @@ module ActiveRecord
64
80
  end
65
81
  end
66
82
 
67
- require "active_record/connection_adapters/abstract_mysql_adapter"
68
83
  class ActiveRecord::ConnectionAdapters::AbstractMysqlAdapter
69
84
  prepend ActiveRecord::DebugErrors::DisplayMySQLInformation
70
85
  end
@@ -1,5 +1,5 @@
1
1
  module ActiveRecord
2
2
  module DebugErrors
3
- VERSION = "0.1.1"
3
+ VERSION = "0.1.2"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: activerecord-debug_errors
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - abicky
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-10-27 00:00:00.000000000 Z
11
+ date: 2022-01-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord
@@ -19,7 +19,7 @@ dependencies:
19
19
  version: '6'
20
20
  - - "<"
21
21
  - !ruby/object:Gem::Version
22
- version: '7'
22
+ version: '8'
23
23
  type: :runtime
24
24
  prerelease: false
25
25
  version_requirements: !ruby/object:Gem::Requirement
@@ -29,21 +29,7 @@ dependencies:
29
29
  version: '6'
30
30
  - - "<"
31
31
  - !ruby/object:Gem::Version
32
- version: '7'
33
- - !ruby/object:Gem::Dependency
34
- name: mysql2
35
- requirement: !ruby/object:Gem::Requirement
36
- requirements:
37
- - - ">="
38
- - !ruby/object:Gem::Version
39
- version: '0'
40
- type: :development
41
- prerelease: false
42
- version_requirements: !ruby/object:Gem::Requirement
43
- requirements:
44
- - - ">="
45
- - !ruby/object:Gem::Version
46
- version: '0'
32
+ version: '8'
47
33
  description: ActiveRecord::DebugErrors is an extension of activerecord to display
48
34
  useful debug logs on errors.
49
35
  email:
@@ -62,6 +48,8 @@ files:
62
48
  - activerecord-debug_errors.gemspec
63
49
  - bin/console
64
50
  - bin/setup
51
+ - gemfiles/activerecord_6.gemfile
52
+ - gemfiles/activerecord_7.gemfile
65
53
  - lib/activerecord-debug_errors.rb
66
54
  - lib/activerecord/debug_errors.rb
67
55
  - lib/activerecord/debug_errors/ext/connection_adapters/abstract_mysql_adapter.rb
@@ -73,7 +61,7 @@ licenses:
73
61
  metadata:
74
62
  homepage_uri: https://github.com/abicky/activerecord-debug_errors
75
63
  source_code_uri: https://github.com/abicky/activerecord-debug_errors
76
- post_install_message:
64
+ post_install_message:
77
65
  rdoc_options: []
78
66
  require_paths:
79
67
  - lib
@@ -88,8 +76,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
88
76
  - !ruby/object:Gem::Version
89
77
  version: '0'
90
78
  requirements: []
91
- rubygems_version: 3.1.4
92
- signing_key:
79
+ rubygems_version: 3.2.22
80
+ signing_key:
93
81
  specification_version: 4
94
82
  summary: An extension of activerecord to display useful debug logs on errors
95
83
  test_files: []