appsignal 1.2.5 → 1.3.0.beta.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 +4 -4
- data/CHANGELOG.md +14 -0
- data/circle.yml +4 -0
- data/ext/agent.yml +11 -11
- data/ext/appsignal_extension.c +105 -40
- data/lib/appsignal.rb +18 -6
- data/lib/appsignal/cli/install.rb +3 -3
- data/lib/appsignal/config.rb +19 -5
- data/lib/appsignal/event_formatter.rb +3 -2
- data/lib/appsignal/event_formatter/elastic_search/search_formatter.rb +1 -1
- data/lib/appsignal/event_formatter/mongo_ruby_driver/query_formatter.rb +1 -1
- data/lib/appsignal/event_formatter/moped/query_formatter.rb +13 -6
- data/lib/appsignal/hooks/mongo_ruby_driver.rb +0 -1
- data/lib/appsignal/hooks/net_http.rb +2 -5
- data/lib/appsignal/hooks/redis.rb +1 -1
- data/lib/appsignal/hooks/sequel.rb +8 -4
- data/lib/appsignal/integrations/mongo_ruby_driver.rb +1 -1
- data/lib/appsignal/integrations/object.rb +35 -0
- data/lib/appsignal/integrations/resque.rb +5 -0
- data/lib/appsignal/integrations/sinatra.rb +2 -2
- data/lib/appsignal/minutely.rb +41 -0
- data/lib/appsignal/params_sanitizer.rb +4 -105
- data/lib/appsignal/rack/sinatra_instrumentation.rb +25 -2
- data/lib/appsignal/transaction.rb +41 -15
- data/lib/appsignal/transmitter.rb +1 -1
- data/lib/appsignal/utils.rb +42 -47
- data/lib/appsignal/utils/params_sanitizer.rb +58 -0
- data/lib/appsignal/utils/query_params_sanitizer.rb +54 -0
- data/lib/appsignal/version.rb +1 -1
- data/spec/lib/appsignal/config_spec.rb +12 -2
- data/spec/lib/appsignal/extension_spec.rb +4 -0
- data/spec/lib/appsignal/hooks/net_http_spec.rb +20 -28
- data/spec/lib/appsignal/hooks/redis_spec.rb +9 -11
- data/spec/lib/appsignal/integrations/object_spec.rb +211 -0
- data/spec/lib/appsignal/integrations/sinatra_spec.rb +2 -2
- data/spec/lib/appsignal/minutely_spec.rb +54 -0
- data/spec/lib/appsignal/rack/sinatra_instrumentation_spec.rb +50 -10
- data/spec/lib/appsignal/subscriber_spec.rb +5 -6
- data/spec/lib/appsignal/transaction_spec.rb +102 -23
- data/spec/lib/appsignal/transmitter_spec.rb +1 -1
- data/spec/lib/appsignal/utils/params_sanitizer_spec.rb +122 -0
- data/spec/lib/appsignal/utils/query_params_sanitizer_spec.rb +194 -0
- data/spec/lib/appsignal/utils_spec.rb +13 -76
- data/spec/lib/appsignal_spec.rb +82 -13
- metadata +15 -11
- data/lib/appsignal/event_formatter/net_http/request_formatter.rb +0 -13
- data/lib/appsignal/event_formatter/sequel/sql_formatter.rb +0 -13
- data/spec/lib/appsignal/event_formatter/net_http/request_formatter_spec.rb +0 -26
- data/spec/lib/appsignal/event_formatter/sequel/sql_formatter_spec.rb +0 -22
- data/spec/lib/appsignal/params_sanitizer_spec.rb +0 -200
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: 1.
|
4
|
+
version: 1.3.0.beta.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Robert Beekman
|
@@ -163,8 +163,6 @@ files:
|
|
163
163
|
- lib/appsignal/event_formatter/faraday/request_formatter.rb
|
164
164
|
- lib/appsignal/event_formatter/mongo_ruby_driver/query_formatter.rb
|
165
165
|
- lib/appsignal/event_formatter/moped/query_formatter.rb
|
166
|
-
- lib/appsignal/event_formatter/net_http/request_formatter.rb
|
167
|
-
- lib/appsignal/event_formatter/sequel/sql_formatter.rb
|
168
166
|
- lib/appsignal/extension.rb
|
169
167
|
- lib/appsignal/hooks.rb
|
170
168
|
- lib/appsignal/hooks/celluloid.rb
|
@@ -184,6 +182,7 @@ files:
|
|
184
182
|
- lib/appsignal/integrations/delayed_job_plugin.rb
|
185
183
|
- lib/appsignal/integrations/grape.rb
|
186
184
|
- lib/appsignal/integrations/mongo_ruby_driver.rb
|
185
|
+
- lib/appsignal/integrations/object.rb
|
187
186
|
- lib/appsignal/integrations/padrino.rb
|
188
187
|
- lib/appsignal/integrations/railtie.rb
|
189
188
|
- lib/appsignal/integrations/rake.rb
|
@@ -192,6 +191,7 @@ files:
|
|
192
191
|
- lib/appsignal/integrations/sinatra.rb
|
193
192
|
- lib/appsignal/js_exception_transaction.rb
|
194
193
|
- lib/appsignal/marker.rb
|
194
|
+
- lib/appsignal/minutely.rb
|
195
195
|
- lib/appsignal/params_sanitizer.rb
|
196
196
|
- lib/appsignal/rack/generic_instrumentation.rb
|
197
197
|
- lib/appsignal/rack/js_exception_catcher.rb
|
@@ -203,6 +203,8 @@ files:
|
|
203
203
|
- lib/appsignal/transmitter.rb
|
204
204
|
- lib/appsignal/update_active_support.rb
|
205
205
|
- lib/appsignal/utils.rb
|
206
|
+
- lib/appsignal/utils/params_sanitizer.rb
|
207
|
+
- lib/appsignal/utils/query_params_sanitizer.rb
|
206
208
|
- lib/appsignal/version.rb
|
207
209
|
- lib/sequel/extensions/appsignal_integration.rb
|
208
210
|
- lib/tasks/diag.rake
|
@@ -227,8 +229,6 @@ files:
|
|
227
229
|
- spec/lib/appsignal/event_formatter/faraday/request_formatter_spec.rb
|
228
230
|
- spec/lib/appsignal/event_formatter/mongo_ruby_driver/query_formatter_spec.rb
|
229
231
|
- spec/lib/appsignal/event_formatter/moped/query_formatter_spec.rb
|
230
|
-
- spec/lib/appsignal/event_formatter/net_http/request_formatter_spec.rb
|
231
|
-
- spec/lib/appsignal/event_formatter/sequel/sql_formatter_spec.rb
|
232
232
|
- spec/lib/appsignal/event_formatter_spec.rb
|
233
233
|
- spec/lib/appsignal/extension_spec.rb
|
234
234
|
- spec/lib/appsignal/hooks/celluloid_spec.rb
|
@@ -246,6 +246,7 @@ files:
|
|
246
246
|
- spec/lib/appsignal/hooks_spec.rb
|
247
247
|
- spec/lib/appsignal/integrations/grape_spec.rb
|
248
248
|
- spec/lib/appsignal/integrations/mongo_ruby_driver_spec.rb
|
249
|
+
- spec/lib/appsignal/integrations/object_spec.rb
|
249
250
|
- spec/lib/appsignal/integrations/padrino_spec.rb
|
250
251
|
- spec/lib/appsignal/integrations/railtie_spec.rb
|
251
252
|
- spec/lib/appsignal/integrations/resque_active_job_spec.rb
|
@@ -253,7 +254,7 @@ files:
|
|
253
254
|
- spec/lib/appsignal/integrations/sinatra_spec.rb
|
254
255
|
- spec/lib/appsignal/js_exception_transaction_spec.rb
|
255
256
|
- spec/lib/appsignal/marker_spec.rb
|
256
|
-
- spec/lib/appsignal/
|
257
|
+
- spec/lib/appsignal/minutely_spec.rb
|
257
258
|
- spec/lib/appsignal/rack/generic_instrumentation_spec.rb
|
258
259
|
- spec/lib/appsignal/rack/js_exception_catcher_spec.rb
|
259
260
|
- spec/lib/appsignal/rack/rails_instrumentation_spec.rb
|
@@ -263,6 +264,8 @@ files:
|
|
263
264
|
- spec/lib/appsignal/transaction_spec.rb
|
264
265
|
- spec/lib/appsignal/transmitter_spec.rb
|
265
266
|
- spec/lib/appsignal/update_active_support_spec.rb
|
267
|
+
- spec/lib/appsignal/utils/params_sanitizer_spec.rb
|
268
|
+
- spec/lib/appsignal/utils/query_params_sanitizer_spec.rb
|
266
269
|
- spec/lib/appsignal/utils_spec.rb
|
267
270
|
- spec/lib/appsignal_spec.rb
|
268
271
|
- spec/lib/tmp/config/appsignal.yml
|
@@ -300,9 +303,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
300
303
|
version: '1.9'
|
301
304
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
302
305
|
requirements:
|
303
|
-
- - "
|
306
|
+
- - ">"
|
304
307
|
- !ruby/object:Gem::Version
|
305
|
-
version:
|
308
|
+
version: 1.3.1
|
306
309
|
requirements: []
|
307
310
|
rubyforge_project:
|
308
311
|
rubygems_version: 2.4.5
|
@@ -325,8 +328,6 @@ test_files:
|
|
325
328
|
- spec/lib/appsignal/event_formatter/faraday/request_formatter_spec.rb
|
326
329
|
- spec/lib/appsignal/event_formatter/mongo_ruby_driver/query_formatter_spec.rb
|
327
330
|
- spec/lib/appsignal/event_formatter/moped/query_formatter_spec.rb
|
328
|
-
- spec/lib/appsignal/event_formatter/net_http/request_formatter_spec.rb
|
329
|
-
- spec/lib/appsignal/event_formatter/sequel/sql_formatter_spec.rb
|
330
331
|
- spec/lib/appsignal/event_formatter_spec.rb
|
331
332
|
- spec/lib/appsignal/extension_spec.rb
|
332
333
|
- spec/lib/appsignal/hooks/celluloid_spec.rb
|
@@ -344,6 +345,7 @@ test_files:
|
|
344
345
|
- spec/lib/appsignal/hooks_spec.rb
|
345
346
|
- spec/lib/appsignal/integrations/grape_spec.rb
|
346
347
|
- spec/lib/appsignal/integrations/mongo_ruby_driver_spec.rb
|
348
|
+
- spec/lib/appsignal/integrations/object_spec.rb
|
347
349
|
- spec/lib/appsignal/integrations/padrino_spec.rb
|
348
350
|
- spec/lib/appsignal/integrations/railtie_spec.rb
|
349
351
|
- spec/lib/appsignal/integrations/resque_active_job_spec.rb
|
@@ -351,7 +353,7 @@ test_files:
|
|
351
353
|
- spec/lib/appsignal/integrations/sinatra_spec.rb
|
352
354
|
- spec/lib/appsignal/js_exception_transaction_spec.rb
|
353
355
|
- spec/lib/appsignal/marker_spec.rb
|
354
|
-
- spec/lib/appsignal/
|
356
|
+
- spec/lib/appsignal/minutely_spec.rb
|
355
357
|
- spec/lib/appsignal/rack/generic_instrumentation_spec.rb
|
356
358
|
- spec/lib/appsignal/rack/js_exception_catcher_spec.rb
|
357
359
|
- spec/lib/appsignal/rack/rails_instrumentation_spec.rb
|
@@ -361,6 +363,8 @@ test_files:
|
|
361
363
|
- spec/lib/appsignal/transaction_spec.rb
|
362
364
|
- spec/lib/appsignal/transmitter_spec.rb
|
363
365
|
- spec/lib/appsignal/update_active_support_spec.rb
|
366
|
+
- spec/lib/appsignal/utils/params_sanitizer_spec.rb
|
367
|
+
- spec/lib/appsignal/utils/query_params_sanitizer_spec.rb
|
364
368
|
- spec/lib/appsignal/utils_spec.rb
|
365
369
|
- spec/lib/appsignal_spec.rb
|
366
370
|
- spec/lib/tmp/config/appsignal.yml
|
@@ -1,13 +0,0 @@
|
|
1
|
-
module Appsignal
|
2
|
-
class EventFormatter
|
3
|
-
module NetHttp
|
4
|
-
class RequestFormatter < Appsignal::EventFormatter
|
5
|
-
register 'request.net_http'
|
6
|
-
|
7
|
-
def format(payload)
|
8
|
-
["#{payload[:method]} #{payload[:protocol]}://#{payload[:domain]}", nil]
|
9
|
-
end
|
10
|
-
end
|
11
|
-
end
|
12
|
-
end
|
13
|
-
end
|
@@ -1,26 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe Appsignal::EventFormatter::NetHttp::RequestFormatter do
|
4
|
-
let(:klass) { Appsignal::EventFormatter::NetHttp::RequestFormatter }
|
5
|
-
let(:formatter) { klass.new }
|
6
|
-
|
7
|
-
it "should register request.net_http" do
|
8
|
-
Appsignal::EventFormatter.registered?('request.net_http', klass).should be_true
|
9
|
-
end
|
10
|
-
|
11
|
-
describe "#format" do
|
12
|
-
let(:payload) do
|
13
|
-
{
|
14
|
-
:protocol => 'http',
|
15
|
-
:url => 'appsignal.com',
|
16
|
-
:domain => 'appsignal.com',
|
17
|
-
:path => '/about',
|
18
|
-
:method => 'GET'
|
19
|
-
}
|
20
|
-
end
|
21
|
-
|
22
|
-
subject { formatter.format(payload) }
|
23
|
-
|
24
|
-
it { should == ['GET http://appsignal.com', nil] }
|
25
|
-
end
|
26
|
-
end
|
@@ -1,22 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe Appsignal::EventFormatter::Sequel::SqlFormatter do
|
4
|
-
let(:klass) { Appsignal::EventFormatter::Sequel::SqlFormatter }
|
5
|
-
let(:formatter) { klass.new }
|
6
|
-
|
7
|
-
it "should register sql.sequel" do
|
8
|
-
Appsignal::EventFormatter.registered?('sql.sequel', klass).should be_true
|
9
|
-
end
|
10
|
-
|
11
|
-
describe "#format" do
|
12
|
-
let(:payload) do
|
13
|
-
{
|
14
|
-
sql: 'SELECT * FROM users'
|
15
|
-
}
|
16
|
-
end
|
17
|
-
|
18
|
-
subject { formatter.format(payload) }
|
19
|
-
|
20
|
-
it { should == [nil, 'SELECT * FROM users', 1] }
|
21
|
-
end
|
22
|
-
end
|
@@ -1,200 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
class ErrorOnInspect
|
4
|
-
def inspect
|
5
|
-
raise 'Error'
|
6
|
-
end
|
7
|
-
end
|
8
|
-
|
9
|
-
class ClassWithInspect
|
10
|
-
def inspect
|
11
|
-
"#<ClassWithInspect foo=\"bar\"/>"
|
12
|
-
end
|
13
|
-
end
|
14
|
-
|
15
|
-
describe Appsignal::ParamsSanitizer do
|
16
|
-
let(:klass) { Appsignal::ParamsSanitizer }
|
17
|
-
let(:file) { uploaded_file }
|
18
|
-
let(:params) do
|
19
|
-
{
|
20
|
-
:text => 'string',
|
21
|
-
:file => file,
|
22
|
-
:float => 0.0,
|
23
|
-
:bool_true => true,
|
24
|
-
:bool_false => false,
|
25
|
-
:nil => nil,
|
26
|
-
:int => 1,
|
27
|
-
:hash => {
|
28
|
-
:nested_text => 'string',
|
29
|
-
:nested_array => [
|
30
|
-
'something',
|
31
|
-
'else',
|
32
|
-
file,
|
33
|
-
{
|
34
|
-
:key => 'value',
|
35
|
-
:file => file,
|
36
|
-
},
|
37
|
-
ErrorOnInspect.new,
|
38
|
-
ClassWithInspect.new
|
39
|
-
]
|
40
|
-
}
|
41
|
-
}
|
42
|
-
end
|
43
|
-
let(:sanitized_params) { klass.sanitize(params) }
|
44
|
-
let(:scrubbed_params) { klass.scrub(params) }
|
45
|
-
|
46
|
-
describe ".sanitize!" do
|
47
|
-
subject { params }
|
48
|
-
before { klass.sanitize!(subject) }
|
49
|
-
|
50
|
-
it { should be_instance_of Hash }
|
51
|
-
its([:text]) { should == 'string' }
|
52
|
-
its([:file]) { should be_instance_of String }
|
53
|
-
its([:file]) { should include '::UploadedFile' }
|
54
|
-
its([:float]) { should == 0.0 }
|
55
|
-
its([:int]) { should == 1 }
|
56
|
-
its([:bool_true]) { should == true }
|
57
|
-
its([:bool_false]) { should == false }
|
58
|
-
its([:nil]) { should == nil }
|
59
|
-
|
60
|
-
context "hash" do
|
61
|
-
subject { params[:hash] }
|
62
|
-
|
63
|
-
it { should be_instance_of Hash }
|
64
|
-
its([:nested_text]) { should == 'string' }
|
65
|
-
|
66
|
-
context "nested_array" do
|
67
|
-
subject { params[:hash][:nested_array] }
|
68
|
-
|
69
|
-
it { should be_instance_of Array }
|
70
|
-
its([0]) { should == 'something' }
|
71
|
-
its([1]) { should == 'else' }
|
72
|
-
its([2]) { should be_instance_of String }
|
73
|
-
its([2]) { should include '::UploadedFile' }
|
74
|
-
its([4]) { should == '#<ErrorOnInspect>' }
|
75
|
-
its([5]) { should == '#<ClassWithInspect>' }
|
76
|
-
|
77
|
-
context "nested hash" do
|
78
|
-
subject { params[:hash][:nested_array][3] }
|
79
|
-
|
80
|
-
it { should be_instance_of Hash }
|
81
|
-
its([:key]) { should == 'value' }
|
82
|
-
its([:file]) { should be_instance_of String }
|
83
|
-
its([:file]) { should include '::UploadedFile' }
|
84
|
-
end
|
85
|
-
end
|
86
|
-
end
|
87
|
-
end
|
88
|
-
|
89
|
-
describe ".sanitize" do
|
90
|
-
subject { sanitized_params }
|
91
|
-
|
92
|
-
it { should be_instance_of Hash }
|
93
|
-
its([:text]) { should == 'string' }
|
94
|
-
its([:file]) { should be_instance_of String }
|
95
|
-
its([:file]) { should include '::UploadedFile' }
|
96
|
-
|
97
|
-
it "does not change the original params" do
|
98
|
-
subject
|
99
|
-
params[:file].should == file
|
100
|
-
params[:hash][:nested_array][2].should == file
|
101
|
-
end
|
102
|
-
|
103
|
-
context "hash" do
|
104
|
-
subject { sanitized_params[:hash] }
|
105
|
-
|
106
|
-
it { should be_instance_of Hash }
|
107
|
-
its([:nested_text]) { should == 'string' }
|
108
|
-
|
109
|
-
context "nested_array" do
|
110
|
-
subject { sanitized_params[:hash][:nested_array] }
|
111
|
-
|
112
|
-
it { should be_instance_of Array }
|
113
|
-
its([0]) { should == 'something' }
|
114
|
-
its([1]) { should == 'else' }
|
115
|
-
its([2]) { should be_instance_of String }
|
116
|
-
its([2]) { should include '::UploadedFile' }
|
117
|
-
|
118
|
-
context "nested hash" do
|
119
|
-
subject { sanitized_params[:hash][:nested_array][3] }
|
120
|
-
|
121
|
-
it { should be_instance_of Hash }
|
122
|
-
its([:key]) { should == 'value' }
|
123
|
-
its([:file]) { should be_instance_of String }
|
124
|
-
its([:file]) { should include '::UploadedFile' }
|
125
|
-
end
|
126
|
-
end
|
127
|
-
end
|
128
|
-
end
|
129
|
-
|
130
|
-
describe ".scrub!" do
|
131
|
-
subject { params }
|
132
|
-
before { klass.scrub!(subject) }
|
133
|
-
|
134
|
-
it { should be_instance_of Hash }
|
135
|
-
its([:text]) { should == '?' }
|
136
|
-
its([:file]) { should == '?' }
|
137
|
-
|
138
|
-
context "hash" do
|
139
|
-
subject { params[:hash] }
|
140
|
-
|
141
|
-
it { should be_instance_of Hash }
|
142
|
-
its([:nested_text]) { should == '?' }
|
143
|
-
|
144
|
-
context "nested_array" do
|
145
|
-
subject { params[:hash][:nested_array] }
|
146
|
-
|
147
|
-
it { should be_instance_of Array }
|
148
|
-
its([0]) { should == '?' }
|
149
|
-
its([1]) { should == '?' }
|
150
|
-
its([2]) { should == '?' }
|
151
|
-
|
152
|
-
context "nested hash" do
|
153
|
-
subject { params[:hash][:nested_array][3] }
|
154
|
-
|
155
|
-
it { should be_instance_of Hash }
|
156
|
-
its([:key]) { should == '?' }
|
157
|
-
its([:file]) { should == '?' }
|
158
|
-
end
|
159
|
-
end
|
160
|
-
end
|
161
|
-
end
|
162
|
-
|
163
|
-
describe ".scrub" do
|
164
|
-
subject { scrubbed_params }
|
165
|
-
|
166
|
-
it "does not change the original params" do
|
167
|
-
subject
|
168
|
-
params[:file].should == file
|
169
|
-
params[:hash][:nested_array][2].should == file
|
170
|
-
end
|
171
|
-
|
172
|
-
it { should be_instance_of Hash }
|
173
|
-
its([:text]) { should == '?' }
|
174
|
-
its([:file]) { should == '?' }
|
175
|
-
|
176
|
-
context "hash" do
|
177
|
-
subject { scrubbed_params[:hash] }
|
178
|
-
|
179
|
-
it { should be_instance_of Hash }
|
180
|
-
its([:nested_text]) { should == '?' }
|
181
|
-
|
182
|
-
context "nested_array" do
|
183
|
-
subject { scrubbed_params[:hash][:nested_array] }
|
184
|
-
|
185
|
-
it { should be_instance_of Array }
|
186
|
-
its([0]) { should == '?' }
|
187
|
-
its([1]) { should == '?' }
|
188
|
-
its([2]) { should == '?' }
|
189
|
-
|
190
|
-
context "nested hash" do
|
191
|
-
subject { scrubbed_params[:hash][:nested_array][3] }
|
192
|
-
|
193
|
-
it { should be_instance_of Hash }
|
194
|
-
its([:key]) { should == '?' }
|
195
|
-
its([:file]) { should == '?' }
|
196
|
-
end
|
197
|
-
end
|
198
|
-
end
|
199
|
-
end
|
200
|
-
end
|