active_record_query_trace 1.8 → 1.8.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: 06d7497a2165d922974efd1ffc10bf6b6725d1c4705f9b5d5464affca6db069e
4
- data.tar.gz: 1d5bf04f35d74b69cddc657d9f91795c315ce4b50422cc79aa06843a0299d3e9
3
+ metadata.gz: ffcc5119bc05b3f37ad664c99bd5fbfa8e8e4d9d014ef6684381c26df844d9df
4
+ data.tar.gz: 0fe883ba8442ad46737b90fef82100f82875f76fc023112548c997ae8451d9c4
5
5
  SHA512:
6
- metadata.gz: '09cd3daa1e090acc6e8bafd776c28c3df40f190baccd3799e5b93629a416f890ce4b4514993842830159840fe8d688ef71ba45f54893c62cf053b045c8dd978f'
7
- data.tar.gz: d53226b99e6eae63ea2b79abf5db75f4f04c546773dc61fda88962d9de2b4c465f84c3af6481b3778d0410e3c4ed07433b29ba29eba5d4481c04efe9d836118c
6
+ metadata.gz: 91681694fdddf26183798f31d9ef6d78a55ed4aeae99824271dc198a3aaf7b4fea7b5f2de883896b3b9840e2d643bfee6052e74ae125c852b22ed035855420f3
7
+ data.tar.gz: 874d7d710c22f18bcb38d3b13509979b4ad912aadc11e3c0889b223f13752c4c2f3d1e275575e8598d1ae0ea82d2fbf32fbe7f0beb6d37491d05b74801e41930
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module ActiveRecordQueryTrace
4
- VERSION = '1.8'
4
+ VERSION = '1.8.2'
5
5
  end
@@ -1,6 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'active_record/log_subscriber'
4
+ require_relative 'active_record_query_trace/version'
4
5
 
5
6
  module ActiveRecordQueryTrace
6
7
  INDENTATION = ' ' * 6
@@ -26,14 +27,9 @@ module ActiveRecordQueryTrace
26
27
  }.freeze
27
28
 
28
29
  class << self
29
- attr_accessor :enabled
30
- attr_accessor :level
31
- attr_accessor :lines
32
- attr_accessor :ignore_cached_queries
33
- attr_accessor :colorize
34
- attr_accessor :query_type
35
- attr_accessor :suppress_logging_of_db_reads
36
- attr_reader :backtrace_cleaner
30
+ attr_accessor :enabled, :lines, :ignore_cached_queries, :colorize, :query_type, :suppress_logging_of_db_reads
31
+ attr_writer :default_cleaner
32
+ attr_reader :backtrace_cleaner, :level
37
33
 
38
34
  def backtrace_cleaner=(cleaner)
39
35
  @backtrace_cleaner =
@@ -43,6 +39,42 @@ module ActiveRecordQueryTrace
43
39
  proc { |trace| cleaner.clean(trace) }
44
40
  end
45
41
  end
42
+
43
+ # When changing the level we need to reset the backtrace cleaner used
44
+ def level=(level)
45
+ @level = level
46
+ @default_cleaner = nil
47
+ end
48
+
49
+ def default_cleaner
50
+ @default_cleaner ||= setup_backtrace_cleaner
51
+ end
52
+
53
+ # The following code creates a brand new BacktraceCleaner just for the use of this Gem
54
+ # avoiding the dealing with Rails.backtrace_cleaner
55
+ def setup_backtrace_cleaner
56
+ cleaner = Rails::BacktraceCleaner.new
57
+ remove_filters_and_silencers cleaner
58
+ cleaner.instance_variable_set :@root, Rails.root.to_s if cleaner.instance_variable_get(:@root) == '/'
59
+ case ActiveRecordQueryTrace.level
60
+ when :app
61
+ cleaner.add_silencer { |line| line !~ rails_root_regexp }
62
+ when :rails
63
+ cleaner.add_silencer { |line| line =~ rails_root_regexp }
64
+ end
65
+ cleaner
66
+ end
67
+
68
+ def remove_filters_and_silencers(cleaner)
69
+ cleaner.remove_filters!
70
+ cleaner.remove_silencers!
71
+ end
72
+
73
+ # This cannot be set in a constant as Rails.root is not yet available when
74
+ # this file is loaded.
75
+ def rails_root_regexp
76
+ @rails_root_regexp ||= %r{#{Regexp.escape(Rails.root.to_s)}(?!/vendor)}
77
+ end
46
78
  end
47
79
 
48
80
  class CustomLogSubscriber < ActiveRecord::LogSubscriber # rubocop:disable Metrics/ClassLength
@@ -60,13 +92,12 @@ module ActiveRecordQueryTrace
60
92
  def sql(event)
61
93
  payload = event.payload
62
94
  return unless display_backtrace?(payload)
63
-
64
- setup_backtrace_cleaner unless ActiveRecordQueryTrace.backtrace_cleaner
65
-
66
95
  trace = fully_formatted_trace # Memoize
67
- debug(trace) unless trace.blank?
96
+ debug(trace) if trace.present?
68
97
  end
69
98
 
99
+ delegate :default_cleaner, to: ActiveRecordQueryTrace
100
+
70
101
  attach_to :active_record
71
102
 
72
103
  private
@@ -93,7 +124,7 @@ module ActiveRecordQueryTrace
93
124
  when :write then !db_read_query?(payload)
94
125
  else
95
126
  raise 'Invalid ActiveRecordQueryTrace.query_type value ' \
96
- "#{ActiveRecordQueryTrace.level}. Should be :all, :read, or :write."
127
+ "#{ActiveRecordQueryTrace.level}. Should be :all, :read, or :write."
97
128
  end
98
129
  end
99
130
 
@@ -104,7 +135,7 @@ module ActiveRecordQueryTrace
104
135
  def fully_formatted_trace
105
136
  cleaned_trace = clean_trace(original_trace)
106
137
  return if cleaned_trace.blank?
107
- stringified_trace = BACKTRACE_PREFIX + lines_to_display(cleaned_trace).join("\n" + INDENTATION)
138
+ stringified_trace = BACKTRACE_PREFIX + lines_to_display(cleaned_trace).join("\n#{INDENTATION}")
108
139
  colorize_text(stringified_trace)
109
140
  end
110
141
 
@@ -127,7 +158,7 @@ module ActiveRecordQueryTrace
127
158
  when :full
128
159
  trace = full_trace
129
160
  when :app, :rails
130
- trace = Rails.backtrace_cleaner.clean(full_trace)
161
+ trace = default_cleaner.clean(full_trace)
131
162
  when :custom
132
163
  unless ActiveRecordQueryTrace.backtrace_cleaner
133
164
  raise 'Configure your backtrace cleaner first via ActiveRecordQueryTrace.backtrace_cleaner = MyCleaner'
@@ -135,7 +166,7 @@ module ActiveRecordQueryTrace
135
166
  trace = ActiveRecordQueryTrace.backtrace_cleaner.call(full_trace)
136
167
  else
137
168
  raise 'Invalid ActiveRecordQueryTrace.level value ' \
138
- "#{ActiveRecordQueryTrace.level}. Should be :full, :rails, or :app."
169
+ "#{ActiveRecordQueryTrace.level}. Should be :full, :rails, or :app."
139
170
  end
140
171
 
141
172
  # We cant use a Rails::BacktraceCleaner filter to display only the relative
@@ -145,38 +176,6 @@ module ActiveRecordQueryTrace
145
176
  end
146
177
  # rubocop:enable Metrics/MethodLength
147
178
 
148
- # Rails by default silences all backtraces that *do not* match
149
- # Rails::BacktraceCleaner::APP_DIRS_PATTERN. In other words, the default
150
- # silencer filters out all framework backtrace lines, leaving only the
151
- # application lines.
152
- def setup_backtrace_cleaner
153
- setup_backtrace_cleaner_path
154
- return if ActiveRecordQueryTrace.level == :full
155
-
156
- remove_filters_and_silencers
157
-
158
- case ActiveRecordQueryTrace.level
159
- when :app
160
- Rails.backtrace_cleaner.add_silencer { |line| line !~ rails_root_regexp }
161
- when :rails
162
- Rails.backtrace_cleaner.add_silencer { |line| line =~ rails_root_regexp }
163
- end
164
- end
165
-
166
- # Rails relies on backtrace cleaner to set the application root directory
167
- # filter. The problem is that the backtrace cleaner is initialized before
168
- # this gem. This ensures that the value of `root` used by the filter
169
- # is correct.
170
- def setup_backtrace_cleaner_path
171
- return unless Rails.backtrace_cleaner.instance_variable_get(:@root) == '/'
172
- Rails.backtrace_cleaner.instance_variable_set :@root, Rails.root.to_s
173
- end
174
-
175
- def remove_filters_and_silencers
176
- Rails.backtrace_cleaner.remove_filters!
177
- Rails.backtrace_cleaner.remove_silencers!
178
- end
179
-
180
179
  # Allow query to be colorized in the terminal
181
180
  def colorize_text(text)
182
181
  return text unless ActiveRecordQueryTrace.colorize
@@ -204,7 +203,7 @@ module ActiveRecordQueryTrace
204
203
  def validate_color_code(color_code)
205
204
  valid_color_code?(color_code) || raise(
206
205
  'ActiveRecordQueryTrace.colorize was set to an invalid ' \
207
- "color. Use one of #{COLORS.keys} or a valid color code."
206
+ "color. Use one of #{COLORS.keys} or a valid color code."
208
207
  )
209
208
  end
210
209
 
@@ -215,12 +214,6 @@ module ActiveRecordQueryTrace
215
214
  def rails_root_prefix
216
215
  @rails_root_prefix ||= "#{Rails.root}/"
217
216
  end
218
-
219
- # This cannot be set in a constant as Rails.root is not yet available when
220
- # this file is loaded.
221
- def rails_root_regexp
222
- @rails_root_regexp ||= %r{#{Regexp.escape(Rails.root.to_s)}(?!\/vendor)}
223
- end
224
217
  end
225
218
  end
226
219
 
@@ -244,7 +237,7 @@ ActiveSupport::LogSubscriber.class_eval do
244
237
 
245
238
  def debug(*args, &block)
246
239
  return if ActiveRecordQueryTrace.suppress_logging_of_db_reads \
247
- && args.first !~ /INSERT|UPDATE|DELETE|#{ActiveRecordQueryTrace::BACKTRACE_PREFIX}/
240
+ && args.first !~ /INSERT|UPDATE|DELETE|#{ActiveRecordQueryTrace::BACKTRACE_PREFIX}/o
248
241
  original_debug(*args, &block)
249
242
  end
250
243
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: active_record_query_trace
3
3
  version: !ruby/object:Gem::Version
4
- version: '1.8'
4
+ version: 1.8.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Cody Caughlan
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2020-10-13 00:00:00.000000000 Z
12
+ date: 2023-07-27 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: activerecord
@@ -17,112 +17,126 @@ dependencies:
17
17
  requirements:
18
18
  - - ">="
19
19
  - !ruby/object:Gem::Version
20
- version: 4.0.0
21
- type: :development
20
+ version: 6.0.0
21
+ type: :runtime
22
22
  prerelease: false
23
23
  version_requirements: !ruby/object:Gem::Requirement
24
24
  requirements:
25
25
  - - ">="
26
26
  - !ruby/object:Gem::Version
27
- version: 4.0.0
27
+ version: 6.0.0
28
28
  - !ruby/object:Gem::Dependency
29
- name: pry
29
+ name: rake
30
30
  requirement: !ruby/object:Gem::Requirement
31
31
  requirements:
32
32
  - - "~>"
33
33
  - !ruby/object:Gem::Version
34
- version: 0.13.0
34
+ version: '13.0'
35
35
  type: :development
36
36
  prerelease: false
37
37
  version_requirements: !ruby/object:Gem::Requirement
38
38
  requirements:
39
39
  - - "~>"
40
40
  - !ruby/object:Gem::Version
41
- version: 0.13.0
41
+ version: '13.0'
42
42
  - !ruby/object:Gem::Dependency
43
- name: pry-byebug
43
+ name: debug
44
44
  requirement: !ruby/object:Gem::Requirement
45
45
  requirements:
46
46
  - - "~>"
47
47
  - !ruby/object:Gem::Version
48
- version: 3.9.0
48
+ version: '1.8'
49
49
  type: :development
50
50
  prerelease: false
51
51
  version_requirements: !ruby/object:Gem::Requirement
52
52
  requirements:
53
53
  - - "~>"
54
54
  - !ruby/object:Gem::Version
55
- version: 3.9.0
55
+ version: '1.8'
56
56
  - !ruby/object:Gem::Dependency
57
57
  name: rspec
58
58
  requirement: !ruby/object:Gem::Requirement
59
59
  requirements:
60
- - - ">="
60
+ - - "~>"
61
61
  - !ruby/object:Gem::Version
62
- version: 3.8.0
62
+ version: '3.12'
63
63
  type: :development
64
64
  prerelease: false
65
65
  version_requirements: !ruby/object:Gem::Requirement
66
66
  requirements:
67
- - - ">="
67
+ - - "~>"
68
68
  - !ruby/object:Gem::Version
69
- version: 3.8.0
69
+ version: '3.12'
70
70
  - !ruby/object:Gem::Dependency
71
71
  name: rubocop
72
72
  requirement: !ruby/object:Gem::Requirement
73
73
  requirements:
74
- - - ">="
74
+ - - "~>"
75
75
  - !ruby/object:Gem::Version
76
- version: 0.65.0
76
+ version: '1.55'
77
77
  type: :development
78
78
  prerelease: false
79
79
  version_requirements: !ruby/object:Gem::Requirement
80
80
  requirements:
81
- - - ">="
81
+ - - "~>"
82
82
  - !ruby/object:Gem::Version
83
- version: 0.65.0
83
+ version: '1.55'
84
84
  - !ruby/object:Gem::Dependency
85
- name: rubocop-rspec
85
+ name: rubocop-performance
86
86
  requirement: !ruby/object:Gem::Requirement
87
87
  requirements:
88
- - - ">="
88
+ - - "~>"
89
89
  - !ruby/object:Gem::Version
90
- version: 1.32.0
90
+ version: '1.18'
91
91
  type: :development
92
92
  prerelease: false
93
93
  version_requirements: !ruby/object:Gem::Requirement
94
94
  requirements:
95
- - - ">="
95
+ - - "~>"
96
96
  - !ruby/object:Gem::Version
97
- version: 1.32.0
97
+ version: '1.18'
98
98
  - !ruby/object:Gem::Dependency
99
- name: simplecov
99
+ name: rubocop-rails
100
100
  requirement: !ruby/object:Gem::Requirement
101
101
  requirements:
102
- - - ">="
102
+ - - "~>"
103
103
  - !ruby/object:Gem::Version
104
- version: 0.16.1
104
+ version: '2.20'
105
105
  type: :development
106
106
  prerelease: false
107
107
  version_requirements: !ruby/object:Gem::Requirement
108
108
  requirements:
109
- - - ">="
109
+ - - "~>"
110
+ - !ruby/object:Gem::Version
111
+ version: '2.20'
112
+ - !ruby/object:Gem::Dependency
113
+ name: rubocop-rspec
114
+ requirement: !ruby/object:Gem::Requirement
115
+ requirements:
116
+ - - "~>"
117
+ - !ruby/object:Gem::Version
118
+ version: '2.22'
119
+ type: :development
120
+ prerelease: false
121
+ version_requirements: !ruby/object:Gem::Requirement
122
+ requirements:
123
+ - - "~>"
110
124
  - !ruby/object:Gem::Version
111
- version: 0.16.1
125
+ version: '2.22'
112
126
  - !ruby/object:Gem::Dependency
113
- name: sqlite3
127
+ name: simplecov
114
128
  requirement: !ruby/object:Gem::Requirement
115
129
  requirements:
116
130
  - - ">="
117
131
  - !ruby/object:Gem::Version
118
- version: 1.3.6
132
+ version: 0.22.0
119
133
  type: :development
120
134
  prerelease: false
121
135
  version_requirements: !ruby/object:Gem::Requirement
122
136
  requirements:
123
137
  - - ">="
124
138
  - !ruby/object:Gem::Version
125
- version: 1.3.6
139
+ version: 0.22.0
126
140
  description: Print stack trace of all DB queries to the Rails log. Helpful to find
127
141
  where queries are being executed in your application.
128
142
  email: bruno@facca.info
@@ -135,7 +149,8 @@ files:
135
149
  homepage: https://github.com/brunofacca/active-record-query-trace
136
150
  licenses:
137
151
  - MIT
138
- metadata: {}
152
+ metadata:
153
+ homepage_uri: https://github.com/brunofacca/active-record-query-trace
139
154
  post_install_message:
140
155
  rdoc_options: []
141
156
  require_paths:
@@ -144,17 +159,17 @@ required_ruby_version: !ruby/object:Gem::Requirement
144
159
  requirements:
145
160
  - - ">="
146
161
  - !ruby/object:Gem::Version
147
- version: '2.4'
162
+ version: '2.7'
148
163
  - - "<"
149
164
  - !ruby/object:Gem::Version
150
- version: '4.0'
165
+ version: '3.4'
151
166
  required_rubygems_version: !ruby/object:Gem::Requirement
152
167
  requirements:
153
168
  - - ">="
154
169
  - !ruby/object:Gem::Version
155
170
  version: '0'
156
171
  requirements: []
157
- rubygems_version: 3.0.6
172
+ rubygems_version: 3.3.3
158
173
  signing_key:
159
174
  specification_version: 4
160
175
  summary: Print stack trace of all DB queries to the Rails log. Helpful to find where