marginalia 1.5.0 → 1.9.0

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: b4d1334e6fae088b614c33883053c675e8ce3208
4
- data.tar.gz: ea48070a0ad0b210045ff6cc8eb485d9db115e3a
2
+ SHA256:
3
+ metadata.gz: 31ba959aad96344c36a5044e5eed7affc9e837c1ebf6fefe204dc401e3c02cff
4
+ data.tar.gz: 5c84a52e9828ff87940bad7ca82ba495f59159fd2154793cc4eeafaacd47da50
5
5
  SHA512:
6
- metadata.gz: 06d3dc8986bdfc70351ece60860aa79e4822f83e0cbcc0cb8211c9197dbf4fa8320f1017f15cbfa9aac40c296ae6a37f8054aa566fac832fe2f02d628d65d073
7
- data.tar.gz: fdee2ee3f3e0bec89b52e54c22056811d7bd4e4cd167d6ef38e00446f25c16cc03f3cd730f4e8456a32ba67ff66b39046a2adb289acb0c9d4a8fc149b75957ba
6
+ metadata.gz: 422739201b1a3e455b233d37500795fb80c4d92e167e4f5c8b7f70a9ee9f5db510fcee7e6623cdea951a8c8db7929b0ce8fcf2fcc5f7fbc15af8c8cd2445a45a
7
+ data.tar.gz: f89615ffdfd2cdffe9cef3edabbaf7bc2a9f5fb4124ec03cb3b402a0a0f1368c1616ade7b2f8a18d2292324d9e63589a70b366f1fb1ec7bc72a4ce8a90f498e4
@@ -1,21 +1,24 @@
1
1
  language: ruby
2
+ sudo: false
3
+
4
+ services:
5
+ - mysql
6
+ - postgresql
2
7
 
3
8
  rvm:
4
- - 2.1
5
9
  - 2.2
6
- - 2.3.1
10
+ - 2.3
11
+ - 2.4
7
12
 
8
- sudo: false
13
+ services:
14
+ - mysql
15
+ - postgresql
9
16
 
10
- script: bundle exec rake db:reset test:all
17
+ script: "bundle exec rake db:reset test:all"
11
18
 
12
- env:
13
- - "RAILS_VERSION=3.1.12"
14
- - "RAILS_VERSION=3.2.19"
15
- - "RAILS_VERSION=4.0.8"
16
- - "RAILS_VERSION=4.1.8"
17
- - "RAILS_VERSION=4.2.0"
18
- - "RAILS_VERSION=3.2.19 TEST_RAILS_API=true"
19
- - "RAILS_VERSION=4.0.8 TEST_RAILS_API=true"
20
- - "RAILS_VERSION=4.1.8 TEST_RAILS_API=true"
21
- - "RAILS_VERSION=4.2.0 TEST_RAILS_API=true"
19
+ gemfile:
20
+ - gemfiles/4.2.gemfile
21
+ - gemfiles/4.2.api.gemfile
22
+ - gemfiles/5.0.gemfile
23
+ - gemfiles/5.1.gemfile
24
+ - gemfiles/5.2.gemfile
data/Gemfile CHANGED
@@ -9,6 +9,8 @@ if "4.2.5" > version
9
9
  else
10
10
  gem 'mysql2', '>= 0.3.13', '< 0.5'
11
11
  end
12
+ gem 'pg', '~> 0.15'
13
+ gem 'sqlite3', '~> 1.3.6'
12
14
 
13
15
  rails = case version
14
16
  when "master"
@@ -22,3 +24,7 @@ gem "rails", rails
22
24
  if ENV["TEST_RAILS_API"] == "true"
23
25
  gem "rails-api", "~> 0.2.1"
24
26
  end
27
+
28
+ if RUBY_VERSION.start_with?('2.3')
29
+ gem 'mysql'
30
+ end
data/README.md CHANGED
@@ -56,6 +56,8 @@ Optionally, you can set the application name shown in the log like so in an init
56
56
  For Rails 3 applications, the name will default to your Rails application name.
57
57
  For Rails 2 applications, "rails" is used as the default application name.
58
58
 
59
+ #### Components
60
+
59
61
  You can also configure the components of the comment that will be appended,
60
62
  by setting `Marginalia::Comment.components`. By default, this is set to:
61
63
 
@@ -100,6 +102,37 @@ With ActiveRecord >= 3.2.19:
100
102
 
101
103
  Pull requests for other included comment components are welcome.
102
104
 
105
+ #### Prepend comments
106
+
107
+ By default marginalia appends the comments at the end of the query. Certain databases, such as MySQL will truncate
108
+ the query text. This is the case for slow query logs and the results of querying some InnoDB internal tables where the
109
+ length of the query is more than 1024 bytes.
110
+
111
+ In order to not lose the marginalia comments from your logs, you can prepend the comments using this option:
112
+
113
+ Marginalia::Comment.prepend_comment = true
114
+
115
+ #### Inline query annotations
116
+
117
+ In addition to the request or job-level component-based annotations,
118
+ Marginalia may be used to add inline annotations to specific queries using a
119
+ block-based API.
120
+
121
+ For example, the following code:
122
+
123
+ Marginalia.with_annotation("foo") do
124
+ Account.where(queenbee_id: 1234567890).first
125
+ end
126
+
127
+ will issue this query:
128
+
129
+ Account Load (0.3ms) SELECT `accounts`.* FROM `accounts`
130
+ WHERE `accounts`.`queenbee_id` = 1234567890
131
+ LIMIT 1
132
+ /*application:BCX,controller:project_imports,action:show*/ /*foo*/
133
+
134
+ Nesting `with_annotation` blocks will concatenate the comment strings.
135
+
103
136
  ## Contributing
104
137
 
105
138
  Start by bundling and creating the test database:
data/Rakefile CHANGED
@@ -5,26 +5,26 @@ task :default => ['test:all']
5
5
 
6
6
  namespace :test do
7
7
  desc "test all drivers"
8
- task :all => [:mysql, :mysql2, :postgresql, :sqlite]
8
+ task :all => [:mysql2, :postgresql, :sqlite]
9
9
 
10
10
  desc "test mysql driver"
11
11
  task :mysql do
12
- sh "DRIVER=mysql ruby -Ilib -Itest test/*_test.rb"
12
+ sh "DRIVER=mysql bundle exec ruby -Ilib -Itest test/*_test.rb"
13
13
  end
14
14
 
15
15
  desc "test mysql2 driver"
16
16
  task :mysql2 do
17
- sh "DRIVER=mysql2 ruby -Ilib -Itest test/*_test.rb"
17
+ sh "DRIVER=mysql2 bundle exec ruby -Ilib -Itest test/*_test.rb"
18
18
  end
19
-
19
+
20
20
  desc "test PostgreSQL driver"
21
21
  task :postgresql do
22
- sh "DRIVER=postgresql DB_USERNAME=postgres ruby -Ilib -Itest test/*_test.rb"
22
+ sh "DRIVER=postgresql DB_USERNAME=postgres bundle exec ruby -Ilib -Itest test/*_test.rb"
23
23
  end
24
-
24
+
25
25
  desc "test sqlite3 driver"
26
26
  task :sqlite do
27
- sh "DRIVER=sqlite3 ruby -Ilib -Itest test/*_test.rb"
27
+ sh "DRIVER=sqlite3 bundle exec ruby -Ilib -Itest test/*_test.rb"
28
28
  end
29
29
  end
30
30
 
@@ -62,5 +62,4 @@ namespace :db do
62
62
  sh 'psql -d postgres -U postgres -c "DROP DATABASE IF EXISTS marginalia_test"'
63
63
  end
64
64
  end
65
-
66
65
  end
@@ -0,0 +1,9 @@
1
+ source "https://rubygems.org"
2
+
3
+ gem "mysql2", "~> 0.3.13"
4
+ gem "pg", "~> 0.15"
5
+ gem "sqlite3", "~> 1.3.6"
6
+ gem "rails", "= 4.2.11.1"
7
+ gem "rails-api", "~> 0.2.1"
8
+
9
+ gemspec :path => "../"
@@ -0,0 +1,8 @@
1
+ source "https://rubygems.org"
2
+
3
+ gem "mysql2", "~> 0.3.13"
4
+ gem "pg", "~> 0.15"
5
+ gem "sqlite3", "~> 1.3.6"
6
+ gem "rails", "= 4.2.11.1"
7
+
8
+ gemspec :path => "../"
@@ -0,0 +1,8 @@
1
+ source "https://rubygems.org"
2
+
3
+ gem "mysql2", "~> 0.3.13"
4
+ gem "pg", "~> 0.15"
5
+ gem "sqlite3", "~> 1.3.6"
6
+ gem "rails", "= 5.0.7.2"
7
+
8
+ gemspec :path => "../"
@@ -0,0 +1,8 @@
1
+ source "https://rubygems.org"
2
+
3
+ gem "mysql2", "~> 0.3.13"
4
+ gem "pg", "~> 0.15"
5
+ gem "sqlite3", "~> 1.3.6"
6
+ gem "rails", "= 5.1.6.2"
7
+
8
+ gemspec :path => "../"
@@ -0,0 +1,8 @@
1
+ source "https://rubygems.org"
2
+
3
+ gem "mysql2", "~> 0.4.10"
4
+ gem "pg", "~> 0.15"
5
+ gem "sqlite3", "~> 1.3.6"
6
+ gem "rails", "= 5.2.2.1"
7
+
8
+ gemspec :path => "../"
@@ -1,5 +1,6 @@
1
1
  require 'marginalia/railtie'
2
2
  require 'marginalia/comment'
3
+ require 'marginalia/sidekiq_instrumentation'
3
4
 
4
5
  module Marginalia
5
6
  mattr_accessor :application_name
@@ -48,10 +49,22 @@ module Marginalia
48
49
  Marginalia::Comment.update_adapter!(self)
49
50
  comment = Marginalia::Comment.construct_comment
50
51
  if comment.present? && !sql.include?(comment)
51
- "#{sql} /*#{comment}*/"
52
- else
53
- sql
52
+ sql = if Marginalia::Comment.prepend_comment
53
+ "/*#{comment}*/ #{sql}"
54
+ else
55
+ "#{sql} /*#{comment}*/"
56
+ end
57
+ end
58
+ inline_comment = Marginalia::Comment.construct_inline_comment
59
+ if inline_comment.present? && !sql.include?(inline_comment)
60
+ sql = if Marginalia::Comment.prepend_comment
61
+ "/*#{inline_comment}*/ #{sql}"
62
+ else
63
+ "#{sql} /*#{inline_comment}*/"
64
+ end
54
65
  end
66
+
67
+ sql
55
68
  end
56
69
 
57
70
  def execute_with_marginalia(sql, name = nil)
@@ -63,9 +76,9 @@ module Marginalia
63
76
  end
64
77
 
65
78
  if ActiveRecord::VERSION::MAJOR >= 5
66
- def exec_query_with_marginalia(sql, name = 'SQL', binds = [], options = {})
79
+ def exec_query_with_marginalia(sql, name = 'SQL', binds = [], **options)
67
80
  options[:prepare] ||= false
68
- exec_query_without_marginalia(annotate_sql(sql), name, binds, options)
81
+ exec_query_without_marginalia(annotate_sql(sql), name, binds, **options)
69
82
  end
70
83
  end
71
84
 
@@ -100,4 +113,11 @@ module Marginalia
100
113
  Marginalia::Comment.clear!
101
114
  end
102
115
  end
116
+
117
+ def self.with_annotation(comment, &block)
118
+ Marginalia::Comment.inline_annotations.push(comment)
119
+ block.call if block.present?
120
+ ensure
121
+ Marginalia::Comment.inline_annotations.pop
122
+ end
103
123
  end
@@ -1,8 +1,10 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'socket'
2
4
 
3
5
  module Marginalia
4
6
  module Comment
5
- mattr_accessor :components, :lines_to_ignore
7
+ mattr_accessor :components, :lines_to_ignore, :prepend_comment
6
8
  Marginalia::Comment.components ||= [:application, :controller, :action]
7
9
 
8
10
  def self.update!(controller = nil)
@@ -18,17 +20,30 @@ 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!
31
+ ret = self.escape_sql_comment(ret)
29
32
  ret
30
33
  end
31
34
 
35
+ def self.construct_inline_comment
36
+ return nil if inline_annotations.none?
37
+ escape_sql_comment(inline_annotations.join)
38
+ end
39
+
40
+ def self.escape_sql_comment(str)
41
+ while str.include?('/*') || str.include?('*/')
42
+ str = str.gsub('/*', '').gsub('*/', '')
43
+ end
44
+ str
45
+ end
46
+
32
47
  def self.clear!
33
48
  self.marginalia_controller = nil
34
49
  end
@@ -88,8 +103,13 @@ module Marginalia
88
103
  marginalia_controller.action_name if marginalia_controller.respond_to? :action_name
89
104
  end
90
105
 
106
+ def self.sidekiq_job
107
+ marginalia_job["class"] if marginalia_job && marginalia_job.respond_to?(:[])
108
+ end
109
+
91
110
  def self.line
92
- Marginalia::Comment.lines_to_ignore ||= /\.rvm|gem|vendor\/|marginalia|rbenv/
111
+ Marginalia::Comment.lines_to_ignore ||= /\.rvm|gem|vendor\/|marginalia|rbenv|monitor\.rb.*mon_synchronize/
112
+
93
113
  last_line = caller.detect do |line|
94
114
  line !~ Marginalia::Comment.lines_to_ignore
95
115
  end
@@ -146,6 +166,10 @@ module Marginalia
146
166
  marginalia_adapter.pool.spec.config
147
167
  end
148
168
  end
169
+
170
+ def self.inline_annotations
171
+ Thread.current[:marginalia_inline_annotations] ||= []
172
+ end
149
173
  end
150
174
 
151
175
  end
@@ -0,0 +1,25 @@
1
+ module Marginalia
2
+
3
+ # Alternative to ActiveJob Instrumentation for Sidekiq.
4
+ # Apt for Instrumenting Sidekiq with Rails version < 4.2.
5
+ module SidekiqInstrumentation
6
+
7
+ class Middleware
8
+ def call(worker, msg, queue)
9
+ Marginalia::Comment.update_job! msg
10
+ yield
11
+ ensure
12
+ Marginalia::Comment.clear_job!
13
+ end
14
+ end
15
+
16
+ def self.enable!
17
+ Sidekiq.configure_server do |config|
18
+ config.server_middleware do |chain|
19
+ chain.add Marginalia::SidekiqInstrumentation::Middleware
20
+ end
21
+ end
22
+ end
23
+ end
24
+
25
+ end
@@ -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", "github@arthurnn.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,18 +8,18 @@ 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.5.0"
11
+ gem.version = "1.9.0"
12
12
  gem.license = "MIT"
13
13
 
14
14
  gem.add_runtime_dependency "actionpack", ">= 2.3"
15
15
  gem.add_runtime_dependency "activerecord", ">= 2.3"
16
16
  gem.add_development_dependency "rake"
17
- gem.add_development_dependency "mysql"
18
17
  gem.add_development_dependency "mysql2"
19
18
  gem.add_development_dependency "pg"
20
19
  gem.add_development_dependency "sqlite3"
21
20
  gem.add_development_dependency "minitest"
22
21
  gem.add_development_dependency "mocha"
22
+ gem.add_development_dependency "sidekiq"
23
23
 
24
24
  gem.summary = gem.description = %q{Attach comments to your ActiveRecord queries.}
25
25
  end
@@ -18,11 +18,13 @@ def adapter_pool_available?
18
18
  end
19
19
 
20
20
  require "minitest/autorun"
21
- require 'mocha/test_unit'
21
+ require "mocha/minitest"
22
22
  require 'logger'
23
23
  require 'pp'
24
24
  require 'active_record'
25
25
  require 'action_controller'
26
+ require 'sidekiq'
27
+ require 'sidekiq/testing'
26
28
 
27
29
  if request_id_available?
28
30
  require 'action_dispatch/middleware/request_id'
@@ -64,7 +66,11 @@ end
64
66
  class PostsController < ActionController::Base
65
67
  def driver_only
66
68
  ActiveRecord::Base.connection.execute "select id from posts"
67
- render :nothing => true
69
+ if Gem::Version.new(Rails::VERSION::STRING) >= Gem::Version.new('5')
70
+ render body: nil
71
+ else
72
+ render nothing: true
73
+ end
68
74
  end
69
75
  end
70
76
 
@@ -83,6 +89,13 @@ if active_job_available?
83
89
  end
84
90
  end
85
91
 
92
+ class PostsSidekiqJob
93
+ include Sidekiq::Worker
94
+ def perform
95
+ Post.first
96
+ end
97
+ end
98
+
86
99
  if using_rails_api?
87
100
  class PostsApiController < ActionController::API
88
101
  def driver_only
@@ -101,7 +114,6 @@ end
101
114
 
102
115
  Marginalia::Railtie.insert
103
116
 
104
-
105
117
  class MarginaliaTest < MiniTest::Test
106
118
  def setup
107
119
  @queries = []
@@ -109,6 +121,7 @@ class MarginaliaTest < MiniTest::Test
109
121
  @queries << args.last[:sql]
110
122
  end
111
123
  @env = Rack::MockRequest.env_for('/')
124
+ ActiveJob::Base.queue_adapter = :inline
112
125
  end
113
126
 
114
127
  def test_double_annotate
@@ -270,6 +283,89 @@ class MarginaliaTest < MiniTest::Test
270
283
  Post.first
271
284
  refute_match %{job:PostsJob}, @queries.last
272
285
  end
286
+
287
+ def test_active_job_with_sidekiq
288
+ Marginalia::Comment.components = [:job, :sidekiq_job]
289
+ PostsJob.perform_later
290
+ assert_match %{job:PostsJob}, @queries.first
291
+
292
+ Post.first
293
+ refute_match %{job:PostsJob}, @queries.last
294
+ end
295
+ end
296
+
297
+ def test_sidekiq_job
298
+ Marginalia::Comment.components = [:sidekiq_job]
299
+ Marginalia::SidekiqInstrumentation.enable!
300
+
301
+ # Test harness does not run Sidekiq middlewares by default so include testing middleware.
302
+ Sidekiq::Testing.server_middleware do |chain|
303
+ chain.add Marginalia::SidekiqInstrumentation::Middleware
304
+ end
305
+
306
+ Sidekiq::Testing.fake!
307
+ PostsSidekiqJob.perform_async
308
+ PostsSidekiqJob.drain
309
+ assert_match %{sidekiq_job:PostsSidekiqJob}, @queries.first
310
+
311
+ Post.first
312
+ refute_match %{sidekiq_job:PostsSidekiqJob}, @queries.last
313
+ end
314
+
315
+ def test_good_comment
316
+ assert_equal Marginalia::Comment.escape_sql_comment('app:foo'), 'app:foo'
317
+ end
318
+
319
+ def test_bad_comments
320
+ assert_equal Marginalia::Comment.escape_sql_comment('*/; DROP TABLE USERS;/*'), '; DROP TABLE USERS;'
321
+ assert_equal Marginalia::Comment.escape_sql_comment('**//; DROP TABLE USERS;/*'), '; DROP TABLE USERS;'
322
+ end
323
+
324
+ def test_inline_annotations
325
+ Marginalia.with_annotation("foo") do
326
+ Post.first
327
+ end
328
+ Post.first
329
+ assert_match %r{/\*foo\*/$}, @queries.first
330
+ refute_match %r{/\*foo\*/$}, @queries.last
331
+ # Assert we're not adding an empty comment, either
332
+ refute_match %r{/\*\s*\*/$}, @queries.last
333
+ end
334
+
335
+ def test_nested_inline_annotations
336
+ Marginalia.with_annotation("foo") do
337
+ Marginalia.with_annotation("bar") do
338
+ Post.first
339
+ end
340
+ end
341
+ assert_match %r{/\*foobar\*/$}, @queries.first
342
+ end
343
+
344
+ def test_bad_inline_annotations
345
+ Marginalia.with_annotation("*/; DROP TABLE USERS;/*") do
346
+ Post.first
347
+ end
348
+ Marginalia.with_annotation("**//; DROP TABLE USERS;//**") do
349
+ Post.first
350
+ end
351
+ assert_match %r{/\*; DROP TABLE USERS;\*/$}, @queries.first
352
+ assert_match %r{/\*; DROP TABLE USERS;\*/$}, @queries.last
353
+ end
354
+
355
+ def test_inline_annotations_are_deduped
356
+ Marginalia.with_annotation("foo") do
357
+ ActiveRecord::Base.connection.execute "select id from posts /*foo*/"
358
+ end
359
+ assert_match %r{select id from posts /\*foo\*/ /\*application:rails\*/$}, @queries.first
360
+ end
361
+
362
+ def test_add_comments_to_beginning_of_query
363
+ Marginalia::Comment.prepend_comment = true
364
+
365
+ ActiveRecord::Base.connection.execute "select id from posts"
366
+ assert_match %r{/\*application:rails\*/ select id from posts$}, @queries.first
367
+ ensure
368
+ Marginalia::Comment.prepend_comment = nil
273
369
  end
274
370
 
275
371
  def teardown
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: marginalia
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.5.0
4
+ version: 1.9.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Noah Lorang
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2017-09-19 00:00:00.000000000 Z
13
+ date: 2020-08-05 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: actionpack
@@ -55,7 +55,7 @@ dependencies:
55
55
  - !ruby/object:Gem::Version
56
56
  version: '0'
57
57
  - !ruby/object:Gem::Dependency
58
- name: mysql
58
+ name: mysql2
59
59
  requirement: !ruby/object:Gem::Requirement
60
60
  requirements:
61
61
  - - ">="
@@ -69,7 +69,7 @@ dependencies:
69
69
  - !ruby/object:Gem::Version
70
70
  version: '0'
71
71
  - !ruby/object:Gem::Dependency
72
- name: mysql2
72
+ name: pg
73
73
  requirement: !ruby/object:Gem::Requirement
74
74
  requirements:
75
75
  - - ">="
@@ -83,7 +83,7 @@ dependencies:
83
83
  - !ruby/object:Gem::Version
84
84
  version: '0'
85
85
  - !ruby/object:Gem::Dependency
86
- name: pg
86
+ name: sqlite3
87
87
  requirement: !ruby/object:Gem::Requirement
88
88
  requirements:
89
89
  - - ">="
@@ -97,7 +97,7 @@ dependencies:
97
97
  - !ruby/object:Gem::Version
98
98
  version: '0'
99
99
  - !ruby/object:Gem::Dependency
100
- name: sqlite3
100
+ name: minitest
101
101
  requirement: !ruby/object:Gem::Requirement
102
102
  requirements:
103
103
  - - ">="
@@ -111,7 +111,7 @@ dependencies:
111
111
  - !ruby/object:Gem::Version
112
112
  version: '0'
113
113
  - !ruby/object:Gem::Dependency
114
- name: minitest
114
+ name: mocha
115
115
  requirement: !ruby/object:Gem::Requirement
116
116
  requirements:
117
117
  - - ">="
@@ -125,7 +125,7 @@ dependencies:
125
125
  - !ruby/object:Gem::Version
126
126
  version: '0'
127
127
  - !ruby/object:Gem::Dependency
128
- name: mocha
128
+ name: sidekiq
129
129
  requirement: !ruby/object:Gem::Requirement
130
130
  requirements:
131
131
  - - ">="
@@ -140,8 +140,7 @@ dependencies:
140
140
  version: '0'
141
141
  description: Attach comments to your ActiveRecord queries.
142
142
  email:
143
- - noah@37signals.com
144
- - github@arthurnn.com
143
+ - arthurnn@github.com
145
144
  executables: []
146
145
  extensions: []
147
146
  extra_rdoc_files: []
@@ -153,10 +152,16 @@ files:
153
152
  - LICENSE
154
153
  - README.md
155
154
  - Rakefile
155
+ - gemfiles/4.2.api.gemfile
156
+ - gemfiles/4.2.gemfile
157
+ - gemfiles/5.0.gemfile
158
+ - gemfiles/5.1.gemfile
159
+ - gemfiles/5.2.gemfile
156
160
  - init.rb
157
161
  - lib/marginalia.rb
158
162
  - lib/marginalia/comment.rb
159
163
  - lib/marginalia/railtie.rb
164
+ - lib/marginalia/sidekiq_instrumentation.rb
160
165
  - marginalia.gemspec
161
166
  - test/query_comments_test.rb
162
167
  homepage: https://github.com/basecamp/marginalia
@@ -178,8 +183,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
178
183
  - !ruby/object:Gem::Version
179
184
  version: '0'
180
185
  requirements: []
181
- rubyforge_project:
182
- rubygems_version: 2.6.11
186
+ rubygems_version: 3.1.2
183
187
  signing_key:
184
188
  specification_version: 4
185
189
  summary: Attach comments to your ActiveRecord queries.