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 +5 -5
- data/.travis.yml +17 -14
- data/Gemfile +6 -0
- data/README.md +33 -0
- data/Rakefile +7 -8
- data/gemfiles/4.2.api.gemfile +9 -0
- data/gemfiles/4.2.gemfile +8 -0
- data/gemfiles/5.0.gemfile +8 -0
- data/gemfiles/5.1.gemfile +8 -0
- data/gemfiles/5.2.gemfile +8 -0
- data/lib/marginalia.rb +25 -5
- data/lib/marginalia/comment.rb +28 -4
- data/lib/marginalia/sidekiq_instrumentation.rb +25 -0
- data/marginalia.gemspec +3 -3
- data/test/query_comments_test.rb +99 -3
- metadata +16 -12
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 31ba959aad96344c36a5044e5eed7affc9e837c1ebf6fefe204dc401e3c02cff
|
4
|
+
data.tar.gz: 5c84a52e9828ff87940bad7ca82ba495f59159fd2154793cc4eeafaacd47da50
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 422739201b1a3e455b233d37500795fb80c4d92e167e4f5c8b7f70a9ee9f5db510fcee7e6623cdea951a8c8db7929b0ce8fcf2fcc5f7fbc15af8c8cd2445a45a
|
7
|
+
data.tar.gz: f89615ffdfd2cdffe9cef3edabbaf7bc2a9f5fb4124ec03cb3b402a0a0f1368c1616ade7b2f8a18d2292324d9e63589a70b366f1fb1ec7bc72a4ce8a90f498e4
|
data/.travis.yml
CHANGED
@@ -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
|
10
|
+
- 2.3
|
11
|
+
- 2.4
|
7
12
|
|
8
|
-
|
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
|
-
|
13
|
-
-
|
14
|
-
-
|
15
|
-
-
|
16
|
-
-
|
17
|
-
-
|
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 => [:
|
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
|
data/lib/marginalia.rb
CHANGED
@@ -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
|
-
|
52
|
-
|
53
|
-
|
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
|
data/lib/marginalia/comment.rb
CHANGED
@@ -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
|
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
|
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 = ["
|
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.
|
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
|
data/test/query_comments_test.rb
CHANGED
@@ -18,11 +18,13 @@ def adapter_pool_available?
|
|
18
18
|
end
|
19
19
|
|
20
20
|
require "minitest/autorun"
|
21
|
-
require
|
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
|
-
|
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.
|
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:
|
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:
|
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:
|
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:
|
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:
|
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:
|
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:
|
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
|
-
-
|
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
|
-
|
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.
|