appsignal 0.12.rc.12 → 0.12.rc.13

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
  SHA1:
3
- metadata.gz: ea4b57223b4ce7c54f6a226de0821addbaa06079
4
- data.tar.gz: c66394b7a553858a83c1bb1040aee9ef9f21392a
3
+ metadata.gz: e677ddb14f503c22d8a2f3f3019ef8ae6d6a4b5d
4
+ data.tar.gz: 5110ca959cf967f1d72c79a7fc3a3697f2d98f67
5
5
  SHA512:
6
- metadata.gz: 88f8dfc67817cb6a9e2f13690f8bb96cb142bbbf81909a0d21cc2f3ba406b6d98248f9832059561281f8c2ab82e7d65f2e7f7b486cf1067e39e30165252bd522
7
- data.tar.gz: 4acecd3add701351dbed761c54e3127240a32e9c6cee8cd3f1e19c09084660f76f2ee9b6cfc6e0bf4346f903b9ec18a87bf77e1b504c1d9ba9b9f72a8c3a353a
6
+ metadata.gz: 76d9f7df0f21d98a33040c4c11e4c8295f8677ff720ba6dec322514917ba342a3ce69c07cbc94f08d0a2e84cf425fb85d2cf128fd30a045a850cedb2076a552d
7
+ data.tar.gz: f5c1ff186860f7035d0c5127d9dd544fce3170dc17e047f2f7939df1d1bad60bac6abd59aa227561136a64ff97d63d0ab048343e1bae29ddba8e3227911e55aa
@@ -2,6 +2,7 @@
2
2
  * New version of event formatting and collection
3
3
  * Use native library and agent
4
4
  * Use API V2
5
+ * Support for Mongoid 5
5
6
 
6
7
  # 0.11.15
7
8
  * Improve Sinatra support
@@ -1,5 +1,6 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
3
  gem 'capistrano', '< 3.0'
4
+ gem 'net-ssh', '2.9.2'
4
5
 
5
6
  gemspec :path => '../'
@@ -1,5 +1,6 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
3
  gem 'capistrano', '>= 3.0'
4
+ gem 'net-ssh', '2.9.2'
4
5
 
5
6
  gemspec :path => '../'
@@ -241,6 +241,7 @@ module Appsignal
241
241
  end
242
242
  end
243
243
 
244
+ require 'appsignal/utils'
244
245
  require 'appsignal/extension'
245
246
  require 'appsignal/auth_check'
246
247
  require 'appsignal/config'
@@ -11,12 +11,12 @@ module Appsignal
11
11
  when 'Moped::Protocol::Command'
12
12
  return ['Command', {
13
13
  :database => op.full_collection_name,
14
- :selector => sanitize(op.selector)
14
+ :selector => Appsignal::Utils.sanitize(op.selector)
15
15
  }.inspect]
16
16
  when 'Moped::Protocol::Query'
17
17
  return ['Query', {
18
18
  :database => op.full_collection_name,
19
- :selector => sanitize(op.selector),
19
+ :selector => Appsignal::Utils.sanitize(op.selector),
20
20
  :flags => op.flags,
21
21
  :limit => op.limit,
22
22
  :skip => op.skip,
@@ -25,21 +25,21 @@ module Appsignal
25
25
  when 'Moped::Protocol::Delete'
26
26
  return ['Delete', {
27
27
  :database => op.full_collection_name,
28
- :selector => sanitize(op.selector),
28
+ :selector => Appsignal::Utils.sanitize(op.selector),
29
29
  :flags => op.flags,
30
30
  }.inspect]
31
31
  when 'Moped::Protocol::Insert'
32
32
  return ['Insert', {
33
33
  :database => op.full_collection_name,
34
- :documents => sanitize(op.documents, true),
34
+ :documents => Appsignal::Utils.sanitize(op.documents, true),
35
35
  :count => op.documents.count,
36
36
  :flags => op.flags,
37
37
  }.inspect]
38
38
  when 'Moped::Protocol::Update'
39
39
  return ['Update', {
40
40
  :database => op.full_collection_name,
41
- :selector => sanitize(op.selector),
42
- :update => sanitize(op.update, true),
41
+ :selector => Appsignal::Utils.sanitize(op.selector),
42
+ :update => Appsignal::Utils.sanitize(op.update, true),
43
43
  :flags => op.flags,
44
44
  }.inspect]
45
45
  when 'Moped::Protocol::KillCursors'
@@ -54,30 +54,7 @@ module Appsignal
54
54
  end
55
55
  end
56
56
 
57
- protected
58
-
59
- def sanitize(params, only_top_level=false)
60
- if params.is_a?(Hash)
61
- {}.tap do |hsh|
62
- params.each do |key, val|
63
- hsh[key] = only_top_level ? '?' : sanitize(val, only_top_level)
64
- end
65
- end
66
- elsif params.is_a?(Array)
67
- if only_top_level
68
- sanitize(params[0], only_top_level)
69
- elsif params.first.is_a?(String)
70
- ['?']
71
- else
72
- params.map do |item|
73
- sanitize(item, only_top_level)
74
- end
75
- end
76
- else
77
- '?'
78
- end
79
- end
80
- end
57
+ end
81
58
  end
82
59
  end
83
60
  end
@@ -97,3 +97,4 @@ require 'appsignal/hooks/resque'
97
97
  require 'appsignal/hooks/sequel'
98
98
  require 'appsignal/hooks/sidekiq'
99
99
  require 'appsignal/hooks/unicorn'
100
+ require 'appsignal/hooks/mongo_ruby_driver'
@@ -0,0 +1,21 @@
1
+ module Appsignal
2
+ class Hooks
3
+ class MongoRubyDriverHook < Appsignal::Hooks::Hook
4
+ register :mongo_ruby_driver
5
+
6
+ def dependencies_present?
7
+ defined?(::Mongo::Monitoring::Global)
8
+ end
9
+
10
+ def install
11
+ require 'appsignal/integrations/mongo_ruby_driver'
12
+
13
+ Mongo::Monitoring::Global.subscribe(
14
+ Mongo::Monitoring::COMMAND,
15
+ Appsignal::Hooks::MongoMonitorSubscriber.new
16
+ )
17
+ end
18
+ end
19
+
20
+ end
21
+ end
@@ -10,10 +10,24 @@ module Appsignal
10
10
  end
11
11
 
12
12
  def install
13
+ ::Puma.cli_config.options[:before_worker_boot] ||= []
14
+ ::Puma.cli_config.options[:before_worker_boot] << Proc.new do |id|
15
+ Appsignal.forked
16
+ end
17
+
13
18
  ::Puma.cli_config.options[:before_worker_shutdown] ||= []
14
19
  ::Puma.cli_config.options[:before_worker_shutdown] << Proc.new do |id|
15
20
  Appsignal.stop
16
21
  end
22
+
23
+ ::Puma::Cluster.class_eval do
24
+ alias stop_workers_without_appsignal stop_workers
25
+
26
+ def stop_workers
27
+ Appsignal.stop
28
+ stop_workers_without_appsignal
29
+ end
30
+ end
17
31
  end
18
32
  end
19
33
  end
@@ -0,0 +1,50 @@
1
+ module Appsignal
2
+ class Hooks
3
+ class MongoMonitorSubscriber
4
+
5
+ # Called by Mongo::Monitor when query starts
6
+ def started(event)
7
+ return unless transaction = Appsignal::Transaction.current
8
+ return if transaction.paused?
9
+
10
+ # Store the query on the transaction, we need it when the event finishes
11
+ store = transaction.store('mongo_driver')
12
+ store[event.request_id] = Appsignal::Utils.sanitize(event.command)
13
+
14
+ # Start this event
15
+ Appsignal::Extension.start_event(transaction.transaction_index)
16
+ end
17
+
18
+ # Called by Mongo::Monitor when query succeeds
19
+ def succeeded(event)
20
+ # Finish the event as succeeded
21
+ finish('SUCCEEDED', event)
22
+ end
23
+
24
+ # Called by Mongo::Monitor when query fails
25
+ def failed(event)
26
+ # Finish the event as failed
27
+ finish('FAILED', event)
28
+ end
29
+
30
+ # Finishes the event in the AppSignal extension
31
+ def finish(result, event)
32
+ return unless transaction = Appsignal::Transaction.current
33
+ return if transaction.paused?
34
+
35
+ # Get the query from the transaction store
36
+ store = transaction.store('mongo_driver')
37
+ command = store[event.request_id].inspect
38
+
39
+ # Finish the event in the extension.
40
+ Appsignal::Extension.finish_event(
41
+ transaction.transaction_index,
42
+ 'query.mongodb',
43
+ event.command_name.to_s,
44
+ %Q(#{event.database_name} | #{result} | #{command})
45
+ )
46
+ end
47
+ end
48
+
49
+ end
50
+ end
@@ -42,7 +42,7 @@ module Appsignal
42
42
  @request = request
43
43
  @paused = false
44
44
  @tags = {}
45
-
45
+ @store = Hash.new({})
46
46
  @options = options
47
47
  @options[:params_method] ||= :params
48
48
 
@@ -68,6 +68,10 @@ module Appsignal
68
68
  @paused == true
69
69
  end
70
70
 
71
+ def store(key)
72
+ @store[key]
73
+ end
74
+
71
75
  def set_tags(given_tags={})
72
76
  @tags.merge!(given_tags)
73
77
  end
@@ -128,6 +132,7 @@ module Appsignal
128
132
 
129
133
  def set_error(error)
130
134
  return unless error
135
+ return unless Appsignal.active?
131
136
  return if Appsignal.is_ignored_error?(error)
132
137
 
133
138
  Appsignal.logger.debug("Adding #{error.class.name} to transaction: #{transaction_id}")
@@ -0,0 +1,25 @@
1
+ module Appsignal
2
+ module Utils
3
+ def self.sanitize(params, only_top_level=false)
4
+ if params.is_a?(Hash)
5
+ {}.tap do |hsh|
6
+ params.each do |key, val|
7
+ hsh[key] = only_top_level ? '?' : sanitize(val, only_top_level)
8
+ end
9
+ end
10
+ elsif params.is_a?(Array)
11
+ if only_top_level
12
+ sanitize(params[0], only_top_level)
13
+ elsif params.first.is_a?(String)
14
+ ['?']
15
+ else
16
+ params.map do |item|
17
+ sanitize(item, only_top_level)
18
+ end
19
+ end
20
+ else
21
+ '?'
22
+ end
23
+ end
24
+ end
25
+ end
@@ -1,5 +1,5 @@
1
1
  require 'yaml'
2
2
 
3
3
  module Appsignal
4
- VERSION = '0.12.rc.12'
4
+ VERSION = '0.12.rc.13'
5
5
  end
@@ -169,7 +169,13 @@ if capistrano2_present?
169
169
  it "should not send deploy marker" do
170
170
  Appsignal::Marker.should_not_receive(:new)
171
171
  @capistrano_config.find_and_execute_task('appsignal:deploy')
172
- @io.string.should include("Not loading: config for 'nonsense' not found")
172
+ @io.string.encode(
173
+ 'UTF-8',
174
+ 'binary',
175
+ :invalid => :replace,
176
+ :undef => :replace,
177
+ :replace => ''
178
+ ).should include("config for 'nonsense' not found")
173
179
  end
174
180
  end
175
181
  end
@@ -43,7 +43,7 @@ describe Appsignal::Config do
43
43
  its(:log_file_path) { should end_with('/tmp/appsignal.log') }
44
44
 
45
45
  context "if it is not writable" do
46
- let(:config) { project_fixture_config('production', :log_path => '/root') }
46
+ let(:config) { project_fixture_config('production', :log_path => '/non-existing') }
47
47
 
48
48
  its(:log_file_path) { should == '/tmp/appsignal.log' }
49
49
  end
@@ -112,36 +112,4 @@ describe Appsignal::EventFormatter::Moped::QueryFormatter do
112
112
  end
113
113
  end
114
114
 
115
- describe "#sanitize" do
116
- context "when params is a hash" do
117
- let(:params) { {'foo' => 'bar'} }
118
-
119
- it "should sanitize all hash values with a questionmark" do
120
- expect( formatter.send(:sanitize, params) ).to eq('foo' => '?')
121
- end
122
- end
123
-
124
- context "when params is an array of hashes" do
125
- let(:params) { [{'foo' => 'bar'}] }
126
-
127
- it "should sanitize all hash values with a questionmark" do
128
- expect( formatter.send(:sanitize, params) ).to eq([{'foo' => '?'}])
129
- end
130
- end
131
-
132
- context "when params is an array of strings " do
133
- let(:params) { ['foo', 'bar'] }
134
-
135
- it "should sanitize all hash values with a single questionmark" do
136
- expect( formatter.send(:sanitize, params) ).to eq(['?'])
137
- end
138
- end
139
- context "when params is a string" do
140
- let(:params) { 'bar'}
141
-
142
- it "should sanitize all hash values with a questionmark" do
143
- expect( formatter.send(:sanitize, params) ).to eq('?')
144
- end
145
- end
146
- end
147
115
  end
@@ -0,0 +1,38 @@
1
+ require 'spec_helper'
2
+
3
+ describe Appsignal::Hooks::MongoRubyDriverHook do
4
+ require 'appsignal/integrations/mongo_ruby_driver'
5
+
6
+ context "with mongo ruby driver" do
7
+ let(:subscriber) { Appsignal::Hooks::MongoMonitorSubscriber.new }
8
+ before { Appsignal::Hooks::MongoMonitorSubscriber.stub(:new => subscriber) }
9
+
10
+ before(:all) do
11
+ module Mongo
12
+ module Monitoring
13
+ COMMAND = 'command'
14
+
15
+ class Global
16
+ def subscribe
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
22
+ after(:all) { Object.send(:remove_const, :Mongo) }
23
+
24
+ its(:dependencies_present?) { should be_true }
25
+
26
+ it "adds a subscriber to Mongo::Monitoring" do
27
+ Mongo::Monitoring::Global.should receive(:subscribe)
28
+ .with('command', subscriber)
29
+ .at_least(:once)
30
+
31
+ Appsignal::Hooks::MongoRubyDriverHook.new.install
32
+ end
33
+ end
34
+
35
+ context "without mongo ruby driver" do
36
+ its(:dependencies_present?) { should be_false }
37
+ end
38
+ end
@@ -7,6 +7,11 @@ describe Appsignal::Hooks::PumaHook do
7
7
  def self.cli_config
8
8
  @cli_config ||= CliConfig.new
9
9
  end
10
+
11
+ class Cluster
12
+ def stop_workers
13
+ end
14
+ end
10
15
  end
11
16
 
12
17
  class CliConfig
@@ -21,24 +26,43 @@ describe Appsignal::Hooks::PumaHook do
21
26
 
22
27
  its(:dependencies_present?) { should be_true }
23
28
 
24
- context "with a nil before worker shutdown" do
29
+ context "when installed" do
30
+ before do
31
+ Appsignal::Hooks::PumaHook.new.install
32
+ end
33
+
34
+ it "adds behavior to Unicorn::Worker#close" do
35
+ cluster = Puma::Cluster.new
36
+
37
+ Appsignal.should_receive(:stop)
38
+ cluster.should_receive(:stop_workers_without_appsignal)
39
+
40
+ cluster.stop_workers
41
+ end
42
+ end
43
+
44
+ context "with nil hooks" do
25
45
  before do
46
+ Puma.cli_config.options.delete(:before_worker_boot)
26
47
  Puma.cli_config.options.delete(:before_worker_shutdown)
27
48
  Appsignal::Hooks::PumaHook.new.install
28
49
  end
29
50
 
30
51
  it "should add a before shutdown worker callback" do
52
+ Puma.cli_config.options[:before_worker_boot].first.should be_a(Proc)
31
53
  Puma.cli_config.options[:before_worker_shutdown].first.should be_a(Proc)
32
54
  end
33
55
  end
34
56
 
35
- context "with an existing before worker shutdown" do
57
+ context "with existing hooks" do
36
58
  before do
59
+ Puma.cli_config.options[:before_worker_boot] = []
37
60
  Puma.cli_config.options[:before_worker_shutdown] = []
38
61
  Appsignal::Hooks::PumaHook.new.install
39
62
  end
40
63
 
41
64
  it "should add a before shutdown worker callback" do
65
+ Puma.cli_config.options[:before_worker_boot].first.should be_a(Proc)
42
66
  Puma.cli_config.options[:before_worker_shutdown].first.should be_a(Proc)
43
67
  end
44
68
  end
@@ -0,0 +1,125 @@
1
+ require 'spec_helper'
2
+ require 'appsignal/integrations/mongo_ruby_driver'
3
+ describe Appsignal::Hooks::MongoMonitorSubscriber do
4
+ let(:subscriber) { Appsignal::Hooks::MongoMonitorSubscriber.new }
5
+
6
+ context "with transaction" do
7
+ let!(:transaction) do
8
+ Appsignal::Transaction.create('1', 'http_request', {}, {})
9
+ end
10
+
11
+ describe "#started" do
12
+ let(:event) do
13
+ double(
14
+ :request_id => 1,
15
+ :command => {'foo' => 'bar'}
16
+ )
17
+ end
18
+
19
+ it "should sanitize command" do
20
+ Appsignal::Utils.should receive(:sanitize).with({'foo' => 'bar'} )
21
+
22
+ subscriber.started(event)
23
+ end
24
+
25
+ it "should store command on the transaction" do
26
+ subscriber.started(event)
27
+
28
+ transaction.store('mongo_driver').should == { 1 => {'foo' => '?'}}
29
+ end
30
+
31
+ it "should start an event in the extension" do
32
+ Appsignal::Extension.should receive(:start_event)
33
+ .with(transaction.transaction_index)
34
+
35
+ subscriber.started(event)
36
+ end
37
+ end
38
+
39
+ describe "#succeeded" do
40
+ let(:event) { double }
41
+
42
+ it "should finish the event" do
43
+ subscriber.should receive(:finish).with('SUCCEEDED', event)
44
+
45
+ subscriber.succeeded(event)
46
+ end
47
+ end
48
+
49
+ describe "#failed" do
50
+ let(:event) { double }
51
+
52
+ it "should finish the event" do
53
+ subscriber.should receive(:finish).with('FAILED', event)
54
+
55
+ subscriber.failed(event)
56
+ end
57
+ end
58
+
59
+ describe "#finish" do
60
+ let(:command) { {'foo' => '?'} }
61
+ let(:event) do
62
+ double(
63
+ :request_id => 2,
64
+ :command_name => :find,
65
+ :database_name => 'test'
66
+ )
67
+ end
68
+
69
+ before do
70
+ store = transaction.store('mongo_driver')
71
+ store[2] = command
72
+ end
73
+
74
+ it "should get the query from the store" do
75
+ transaction.should receive(:store).with('mongo_driver').and_return(command)
76
+
77
+ subscriber.finish('SUCCEEDED', event)
78
+ end
79
+
80
+ it "should finish the transaction in the extension" do
81
+ Appsignal::Extension.should receive(:finish_event).with(
82
+ transaction.transaction_index,
83
+ 'query.mongodb',
84
+ 'find',
85
+ "test | SUCCEEDED | {\"foo\"=>\"?\"}"
86
+ )
87
+
88
+ subscriber.finish('SUCCEEDED', event)
89
+ end
90
+ end
91
+ end
92
+
93
+ context "without transaction" do
94
+ before { Appsignal::Transaction.stub(:current => nil) }
95
+
96
+ it "should not attempt to start an event" do
97
+ Appsignal::Extension.should_not receive(:start_event)
98
+
99
+ subscriber.started(double)
100
+ end
101
+
102
+ it "should not attempt to finish an event" do
103
+ Appsignal::Extension.should_not receive(:finish_event)
104
+
105
+ subscriber.finish('SUCCEEDED', double)
106
+ end
107
+ end
108
+
109
+ context "when appsignal is paused" do
110
+ let(:transaction) { double(:paused? => true) }
111
+ before { Appsignal::Transaction.stub(:current => transaction) }
112
+
113
+ it "should not attempt to start an event" do
114
+ Appsignal::Extension.should_not receive(:start_event)
115
+
116
+ subscriber.started(double)
117
+ end
118
+
119
+ it "should not attempt to finish an event" do
120
+ Appsignal::Extension.should_not receive(:finish_event)
121
+
122
+ subscriber.finish('SUCCEEDED', double)
123
+ end
124
+ end
125
+ end
@@ -149,6 +149,19 @@ describe Appsignal::Transaction do
149
149
  end
150
150
  end
151
151
 
152
+ describe "#store" do
153
+ it "should return an empty store when it's not already present" do
154
+ expect( transaction.store('test') ).to eql({})
155
+ end
156
+
157
+ it "should store changes to the store" do
158
+ transaction_store = transaction.store('test')
159
+ transaction_store['transaction'] = 'value'
160
+
161
+ expect( transaction.store('test') ).to eql({'transaction' => 'value'})
162
+ end
163
+ end
164
+
152
165
  describe "#set_tags" do
153
166
  it "should add tags to transaction" do
154
167
  expect {
@@ -332,6 +345,13 @@ describe Appsignal::Transaction do
332
345
  transaction.set_error(error)
333
346
  end
334
347
 
348
+ it "should not add the error if appsignal is not active" do
349
+ Appsignal.stub(:active? => false)
350
+ Appsignal::Extension.should_not_receive(:set_transaction_error)
351
+
352
+ transaction.set_error(error)
353
+ end
354
+
335
355
  context "for a http request" do
336
356
  it "should set an error in the extension" do
337
357
  Appsignal::Extension.should_receive(:set_transaction_error).with(
@@ -0,0 +1,36 @@
1
+ require 'spec_helper'
2
+
3
+ describe Appsignal::Utils do
4
+ describe ".sanitize" do
5
+ context "when params is a hash" do
6
+ let(:params) { {'foo' => 'bar'} }
7
+
8
+ it "should sanitize all hash values with a questionmark" do
9
+ expect( Appsignal::Utils.sanitize(params) ).to eq('foo' => '?')
10
+ end
11
+ end
12
+
13
+ context "when params is an array of hashes" do
14
+ let(:params) { [{'foo' => 'bar'}] }
15
+
16
+ it "should sanitize all hash values with a questionmark" do
17
+ expect( Appsignal::Utils.sanitize(params) ).to eq([{'foo' => '?'}])
18
+ end
19
+ end
20
+
21
+ context "when params is an array of strings " do
22
+ let(:params) { ['foo', 'bar'] }
23
+
24
+ it "should sanitize all hash values with a single questionmark" do
25
+ expect( Appsignal::Utils.sanitize(params) ).to eq(['?'])
26
+ end
27
+ end
28
+ context "when params is a string" do
29
+ let(:params) { 'bar'}
30
+
31
+ it "should sanitize all hash values with a questionmark" do
32
+ expect( Appsignal::Utils.sanitize(params) ).to eq('?')
33
+ end
34
+ end
35
+ end
36
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: appsignal
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.12.rc.12
4
+ version: 0.12.rc.13
5
5
  platform: ruby
6
6
  authors:
7
7
  - Robert Beekman
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2015-12-18 00:00:00.000000000 Z
12
+ date: 2015-12-30 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rack
@@ -156,6 +156,7 @@ files:
156
156
  - lib/appsignal/hooks.rb
157
157
  - lib/appsignal/hooks/celluloid.rb
158
158
  - lib/appsignal/hooks/delayed_job.rb
159
+ - lib/appsignal/hooks/mongo_ruby_driver.rb
159
160
  - lib/appsignal/hooks/net_http.rb
160
161
  - lib/appsignal/hooks/passenger.rb
161
162
  - lib/appsignal/hooks/puma.rb
@@ -169,6 +170,7 @@ files:
169
170
  - lib/appsignal/integrations/capistrano/capistrano_2_tasks.rb
170
171
  - lib/appsignal/integrations/capistrano/careful_logger.rb
171
172
  - lib/appsignal/integrations/delayed_job_plugin.rb
173
+ - lib/appsignal/integrations/mongo_ruby_driver.rb
172
174
  - lib/appsignal/integrations/padrino.rb
173
175
  - lib/appsignal/integrations/railtie.rb
174
176
  - lib/appsignal/integrations/sinatra.rb
@@ -182,6 +184,7 @@ files:
182
184
  - lib/appsignal/subscriber.rb
183
185
  - lib/appsignal/transaction.rb
184
186
  - lib/appsignal/transmitter.rb
187
+ - lib/appsignal/utils.rb
185
188
  - lib/appsignal/version.rb
186
189
  - lib/generators/appsignal/USAGE
187
190
  - lib/generators/appsignal/appsignal_generator.rb
@@ -205,6 +208,7 @@ files:
205
208
  - spec/lib/appsignal/extension_spec.rb
206
209
  - spec/lib/appsignal/hooks/celluloid_spec.rb
207
210
  - spec/lib/appsignal/hooks/delayed_job_spec.rb
211
+ - spec/lib/appsignal/hooks/mongo_ruby_driver_spec.rb
208
212
  - spec/lib/appsignal/hooks/net_http_spec.rb
209
213
  - spec/lib/appsignal/hooks/passenger_spec.rb
210
214
  - spec/lib/appsignal/hooks/puma_spec.rb
@@ -215,6 +219,7 @@ files:
215
219
  - spec/lib/appsignal/hooks/sidekiq_spec.rb
216
220
  - spec/lib/appsignal/hooks/unicorn_spec.rb
217
221
  - spec/lib/appsignal/hooks_spec.rb
222
+ - spec/lib/appsignal/integrations/mongo_ruby_driver_spec.rb
218
223
  - spec/lib/appsignal/integrations/padrino_spec.rb
219
224
  - spec/lib/appsignal/integrations/railtie_spec.rb
220
225
  - spec/lib/appsignal/integrations/sinatra_spec.rb
@@ -228,6 +233,7 @@ files:
228
233
  - spec/lib/appsignal/subscriber_spec.rb
229
234
  - spec/lib/appsignal/transaction_spec.rb
230
235
  - spec/lib/appsignal/transmitter_spec.rb
236
+ - spec/lib/appsignal/utils_spec.rb
231
237
  - spec/lib/appsignal_spec.rb
232
238
  - spec/lib/generators/appsignal/appsignal_generator_spec.rb
233
239
  - spec/lib/tmp/config/appsignal.yml
@@ -283,6 +289,7 @@ test_files:
283
289
  - spec/lib/appsignal/extension_spec.rb
284
290
  - spec/lib/appsignal/hooks/celluloid_spec.rb
285
291
  - spec/lib/appsignal/hooks/delayed_job_spec.rb
292
+ - spec/lib/appsignal/hooks/mongo_ruby_driver_spec.rb
286
293
  - spec/lib/appsignal/hooks/net_http_spec.rb
287
294
  - spec/lib/appsignal/hooks/passenger_spec.rb
288
295
  - spec/lib/appsignal/hooks/puma_spec.rb
@@ -293,6 +300,7 @@ test_files:
293
300
  - spec/lib/appsignal/hooks/sidekiq_spec.rb
294
301
  - spec/lib/appsignal/hooks/unicorn_spec.rb
295
302
  - spec/lib/appsignal/hooks_spec.rb
303
+ - spec/lib/appsignal/integrations/mongo_ruby_driver_spec.rb
296
304
  - spec/lib/appsignal/integrations/padrino_spec.rb
297
305
  - spec/lib/appsignal/integrations/railtie_spec.rb
298
306
  - spec/lib/appsignal/integrations/sinatra_spec.rb
@@ -306,6 +314,7 @@ test_files:
306
314
  - spec/lib/appsignal/subscriber_spec.rb
307
315
  - spec/lib/appsignal/transaction_spec.rb
308
316
  - spec/lib/appsignal/transmitter_spec.rb
317
+ - spec/lib/appsignal/utils_spec.rb
309
318
  - spec/lib/appsignal_spec.rb
310
319
  - spec/lib/generators/appsignal/appsignal_generator_spec.rb
311
320
  - spec/lib/tmp/config/appsignal.yml