marginalia 1.8.0 → 1.10.1

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
- SHA1:
3
- metadata.gz: d2bf4536bf33fce1b7c806d0b2fec3cbe221b166
4
- data.tar.gz: ed2d7dfeac456ce8a9f63f5257e63e7d05526f6d
2
+ SHA256:
3
+ metadata.gz: 8dba7f58a767008578f36af3a2bedc77139f11b62025e1dcd022c1ebd3658c3c
4
+ data.tar.gz: 9d4728cbc7b673514cce7076a60c28592646fbc68ac59d8310c7ebe3aa71eac6
5
5
  SHA512:
6
- metadata.gz: 255f216a7e47faa1a4d5e36f38a922d6abca36ce2f3a9c3189f2849a50c543237c9be76c1bf8abe9064f1b97d0c9d78379883271405e3e3781359be22ec08ed3
7
- data.tar.gz: 0983b7a057ecb4cf56cd031572d6f498c8906daf8b7f67b8a5d7a9e7944128d23d27f78b8020d93c52ef5f6670d127e1a1c47da4aee6d96df1a7b0104f65887f
6
+ metadata.gz: 35dfdc97e0745484719266a9c616c257072dfbdf0ee8ff6b4c7055d051510a562bf12d863eae670c382f14eda7ba895f4a988baa031ea43904fd9a2a31fd7c0e
7
+ data.tar.gz: 3fbfdeacc57e3a8e78490e991527610a3249c0b3e748de7410a427e9e085e6b420a12d916b0c15d87a7240743a81e9be14727508743d25d7cc82d850924ad126
data/.ruby-version CHANGED
@@ -1 +1 @@
1
- 2.2.3
1
+ 2.6.6
data/.travis.yml CHANGED
@@ -1,10 +1,21 @@
1
1
  language: ruby
2
2
  sudo: false
3
3
 
4
+ services:
5
+ - mysql
6
+ - postgresql
7
+
4
8
  rvm:
5
9
  - 2.2
6
10
  - 2.3
7
11
  - 2.4
12
+ - 2.5
13
+ - 2.6
14
+ - 2.7
15
+
16
+ services:
17
+ - mysql
18
+ - postgresql
8
19
 
9
20
  script: "bundle exec rake db:reset test:all"
10
21
 
@@ -14,3 +25,10 @@ gemfile:
14
25
  - gemfiles/5.0.gemfile
15
26
  - gemfiles/5.1.gemfile
16
27
  - gemfiles/5.2.gemfile
28
+
29
+ matrix:
30
+ exclude:
31
+ - rvm: 2.7
32
+ gemfile: gemfiles/4.2.gemfile
33
+ - rvm: 2.7
34
+ gemfile: gemfiles/4.2.api.gemfile
data/lib/marginalia.rb CHANGED
@@ -67,32 +67,43 @@ module Marginalia
67
67
  sql
68
68
  end
69
69
 
70
- def execute_with_marginalia(sql, name = nil)
71
- execute_without_marginalia(annotate_sql(sql), name)
70
+ def execute_with_marginalia(sql, *args)
71
+ execute_without_marginalia(annotate_sql(sql), *args)
72
72
  end
73
+ ruby2_keywords :execute_with_marginalia if respond_to?(:ruby2_keywords, true)
73
74
 
74
- def exec_query_with_marginalia(sql, name = 'SQL', binds = [])
75
- exec_query_without_marginalia(annotate_sql(sql), name, binds)
75
+ def exec_query_with_marginalia(sql, *args)
76
+ exec_query_without_marginalia(annotate_sql(sql), *args)
76
77
  end
78
+ ruby2_keywords :exec_query_with_marginalia if respond_to?(:ruby2_keywords, true)
77
79
 
78
80
  if ActiveRecord::VERSION::MAJOR >= 5
79
- def exec_query_with_marginalia(sql, name = 'SQL', binds = [], options = {})
81
+ def exec_query_with_marginalia(sql, *args, **options)
80
82
  options[:prepare] ||= false
81
- exec_query_without_marginalia(annotate_sql(sql), name, binds, options)
83
+ exec_query_without_marginalia(annotate_sql(sql), *args, **options)
82
84
  end
83
85
  end
84
86
 
85
- def exec_delete_with_marginalia(sql, name = 'SQL', binds = [])
86
- exec_delete_without_marginalia(annotate_sql(sql), name, binds)
87
+ def exec_delete_with_marginalia(sql, *args)
88
+ exec_delete_without_marginalia(annotate_sql(sql), *args)
87
89
  end
90
+ ruby2_keywords :exec_delete_with_marginalia if respond_to?(:ruby2_keywords, true)
88
91
 
89
- def exec_update_with_marginalia(sql, name = 'SQL', binds = [])
90
- exec_update_without_marginalia(annotate_sql(sql), name, binds)
92
+ def exec_update_with_marginalia(sql, *args)
93
+ exec_update_without_marginalia(annotate_sql(sql), *args)
91
94
  end
95
+ ruby2_keywords :exec_update_with_marginalia if respond_to?(:ruby2_keywords, true)
92
96
 
97
+ if ActiveRecord::VERSION::MAJOR >= 5
93
98
  def execute_and_clear_with_marginalia(sql, *args, &block)
94
99
  execute_and_clear_without_marginalia(annotate_sql(sql), *args, &block)
95
100
  end
101
+ ruby2_keywords :execute_and_clear_with_marginalia if respond_to?(:ruby2_keywords, true)
102
+ else
103
+ def execute_and_clear_with_marginalia(sql, *args, &block)
104
+ execute_and_clear_without_marginalia(annotate_sql(sql), *args, &block)
105
+ end
106
+ end
96
107
  end
97
108
 
98
109
  module ActionControllerInstrumentation
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'socket'
2
4
 
3
5
  module Marginalia
@@ -18,11 +20,11 @@ module Marginalia
18
20
  end
19
21
 
20
22
  def self.construct_comment
21
- ret = ''
23
+ ret = String.new
22
24
  self.components.each do |c|
23
25
  component_value = self.send(c)
24
26
  if component_value.present?
25
- ret << "#{c.to_s}:#{component_value.to_s},"
27
+ ret << "#{c}:#{component_value},"
26
28
  end
27
29
  end
28
30
  ret.chop!
@@ -102,11 +104,14 @@ module Marginalia
102
104
  end
103
105
 
104
106
  def self.sidekiq_job
105
- marginalia_job["class"] if marginalia_job
107
+ marginalia_job["class"] if marginalia_job && marginalia_job.respond_to?(:[])
106
108
  end
107
109
 
110
+ DEFAULT_LINES_TO_IGNORE_REGEX = %r{\.rvm|/ruby/gems/|vendor/|marginalia|rbenv|monitor\.rb.*mon_synchronize}
111
+
108
112
  def self.line
109
- Marginalia::Comment.lines_to_ignore ||= /\.rvm|gem|vendor\/|marginalia|rbenv/
113
+ Marginalia::Comment.lines_to_ignore ||= DEFAULT_LINES_TO_IGNORE_REGEX
114
+
110
115
  last_line = caller.detect do |line|
111
116
  line !~ Marginalia::Comment.lines_to_ignore
112
117
  end
data/marginalia.gemspec CHANGED
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |gem|
2
2
  gem.authors = ["Noah Lorang", "Nick Quaranto", "Taylor Weibley"]
3
- gem.email = ["noah@37signals.com", "arthurnn@github.com"]
3
+ gem.email = ["arthurnn@github.com"]
4
4
  gem.homepage = "https://github.com/basecamp/marginalia"
5
5
 
6
6
  gem.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
@@ -8,7 +8,7 @@ Gem::Specification.new do |gem|
8
8
  gem.test_files = `git ls-files -- {test}/*`.split("\n")
9
9
  gem.name = "marginalia"
10
10
  gem.require_paths = ["lib"]
11
- gem.version = "1.8.0"
11
+ gem.version = "1.10.1"
12
12
  gem.license = "MIT"
13
13
 
14
14
  gem.add_runtime_dependency "actionpack", ">= 2.3"
@@ -121,6 +121,7 @@ class MarginaliaTest < MiniTest::Test
121
121
  @queries << args.last[:sql]
122
122
  end
123
123
  @env = Rack::MockRequest.env_for('/')
124
+ ActiveJob::Base.queue_adapter = :inline
124
125
  end
125
126
 
126
127
  def test_double_annotate
@@ -215,6 +216,16 @@ class MarginaliaTest < MiniTest::Test
215
216
  assert_match %r{/\*line:.*lib/marginalia/comment.rb:[0-9]+}, @queries.first
216
217
  end
217
218
 
219
+ def test_default_lines_to_ignore_regex
220
+ line = "/gems/a_gem/lib/a_gem.rb:1:in `some_method'"
221
+ call_stack = [line] + caller
222
+
223
+ assert_match(
224
+ call_stack.detect { |line| line !~ Marginalia::Comment::DEFAULT_LINES_TO_IGNORE_REGEX },
225
+ line
226
+ )
227
+ end
228
+
218
229
  def test_hostname_and_pid
219
230
  Marginalia::Comment.components = [:hostname, :pid]
220
231
  PostsController.action(:driver_only).call(@env)
@@ -282,6 +293,15 @@ class MarginaliaTest < MiniTest::Test
282
293
  Post.first
283
294
  refute_match %{job:PostsJob}, @queries.last
284
295
  end
296
+
297
+ def test_active_job_with_sidekiq
298
+ Marginalia::Comment.components = [:job, :sidekiq_job]
299
+ PostsJob.perform_later
300
+ assert_match %{job:PostsJob}, @queries.first
301
+
302
+ Post.first
303
+ refute_match %{job:PostsJob}, @queries.last
304
+ end
285
305
  end
286
306
 
287
307
  def test_sidekiq_job
@@ -290,13 +310,14 @@ class MarginaliaTest < MiniTest::Test
290
310
 
291
311
  # Test harness does not run Sidekiq middlewares by default so include testing middleware.
292
312
  Sidekiq::Testing.server_middleware do |chain|
293
- chain.add Marginalia::SidekiqInstrumentation::Middleware
313
+ chain.add Marginalia::SidekiqInstrumentation::Middleware
294
314
  end
295
315
 
296
316
  Sidekiq::Testing.fake!
297
317
  PostsSidekiqJob.perform_async
298
318
  PostsSidekiqJob.drain
299
319
  assert_match %{sidekiq_job:PostsSidekiqJob}, @queries.first
320
+
300
321
  Post.first
301
322
  refute_match %{sidekiq_job:PostsSidekiqJob}, @queries.last
302
323
  end
metadata CHANGED
@@ -1,16 +1,16 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: marginalia
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.8.0
4
+ version: 1.10.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Noah Lorang
8
8
  - Nick Quaranto
9
9
  - Taylor Weibley
10
- autorequire:
10
+ autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2019-03-25 00:00:00.000000000 Z
13
+ date: 2021-02-17 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: actionpack
@@ -140,7 +140,6 @@ dependencies:
140
140
  version: '0'
141
141
  description: Attach comments to your ActiveRecord queries.
142
142
  email:
143
- - noah@37signals.com
144
143
  - arthurnn@github.com
145
144
  executables: []
146
145
  extensions: []
@@ -169,7 +168,7 @@ homepage: https://github.com/basecamp/marginalia
169
168
  licenses:
170
169
  - MIT
171
170
  metadata: {}
172
- post_install_message:
171
+ post_install_message:
173
172
  rdoc_options: []
174
173
  require_paths:
175
174
  - lib
@@ -184,9 +183,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
184
183
  - !ruby/object:Gem::Version
185
184
  version: '0'
186
185
  requirements: []
187
- rubyforge_project:
188
- rubygems_version: 2.4.5.1
189
- signing_key:
186
+ rubygems_version: 3.0.3
187
+ signing_key:
190
188
  specification_version: 4
191
189
  summary: Attach comments to your ActiveRecord queries.
192
190
  test_files: []