activerecord-debug_errors 0.1.1 → 0.1.2

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: 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: []