active_record_query_trace 1.8 → 1.8.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: 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