appsignal 1.0.7 → 1.1.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.
Files changed (57) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +1 -0
  3. data/CHANGELOG.md +5 -21
  4. data/Rakefile +2 -0
  5. data/circle.yml +2 -1
  6. data/ext/agent.yml +7 -7
  7. data/ext/appsignal_extension.c +3 -5
  8. data/ext/extconf.rb +6 -15
  9. data/gemfiles/grape.gemfile +7 -0
  10. data/lib/appsignal/config.rb +2 -5
  11. data/lib/appsignal/event_formatter.rb +0 -2
  12. data/lib/appsignal/event_formatter/active_record/sql_formatter.rb +47 -1
  13. data/lib/appsignal/event_formatter/elastic_search/search_formatter.rb +29 -0
  14. data/lib/appsignal/event_formatter/moped/query_formatter.rb +7 -6
  15. data/lib/appsignal/hooks.rb +33 -0
  16. data/lib/appsignal/hooks/net_http.rb +1 -1
  17. data/lib/appsignal/hooks/sequel.rb +7 -4
  18. data/lib/appsignal/hooks/sidekiq.rb +10 -19
  19. data/lib/appsignal/integrations/capistrano/appsignal.cap +1 -1
  20. data/lib/appsignal/integrations/delayed_job_plugin.rb +20 -11
  21. data/lib/appsignal/integrations/grape.rb +44 -0
  22. data/lib/appsignal/integrations/mongo_ruby_driver.rb +5 -9
  23. data/lib/appsignal/integrations/railtie.rb +4 -0
  24. data/lib/appsignal/integrations/resque.rb +1 -1
  25. data/lib/appsignal/js_exception_transaction.rb +2 -3
  26. data/lib/appsignal/subscriber.rb +2 -3
  27. data/lib/appsignal/transaction.rb +2 -8
  28. data/lib/appsignal/transmitter.rb +1 -1
  29. data/lib/appsignal/utils.rb +7 -43
  30. data/lib/appsignal/version.rb +1 -1
  31. data/lib/tasks/diag.rake +75 -0
  32. data/spec/lib/appsignal/capistrano3_spec.rb +1 -21
  33. data/spec/lib/appsignal/config_spec.rb +0 -12
  34. data/spec/lib/appsignal/event_formatter/active_record/instantiation_formatter_spec.rb +1 -1
  35. data/spec/lib/appsignal/event_formatter/active_record/sql_formatter_spec.rb +186 -14
  36. data/spec/lib/appsignal/event_formatter/elastic_search/search_formatter_spec.rb +54 -0
  37. data/spec/lib/appsignal/event_formatter/moped/query_formatter_spec.rb +4 -4
  38. data/spec/lib/appsignal/extension_spec.rb +1 -1
  39. data/spec/lib/appsignal/hooks/delayed_job_spec.rb +49 -14
  40. data/spec/lib/appsignal/hooks/sequel_spec.rb +1 -1
  41. data/spec/lib/appsignal/hooks/sidekiq_spec.rb +29 -62
  42. data/spec/lib/appsignal/hooks_spec.rb +115 -0
  43. data/spec/lib/appsignal/integrations/grape_spec.rb +94 -0
  44. data/spec/lib/appsignal/integrations/mongo_ruby_driver_spec.rb +5 -8
  45. data/spec/lib/appsignal/integrations/resque_spec.rb +0 -1
  46. data/spec/lib/appsignal/js_exception_transaction_spec.rb +0 -1
  47. data/spec/lib/appsignal/subscriber_spec.rb +5 -23
  48. data/spec/lib/appsignal/transaction_spec.rb +0 -21
  49. data/spec/lib/appsignal/utils_spec.rb +1 -68
  50. data/spec/spec_helper.rb +16 -0
  51. data/spec/support/helpers/env_helpers.rb +0 -1
  52. data/spec/support/stubs/delayed_job.rb +0 -0
  53. metadata +15 -11
  54. data/lib/appsignal/event_formatter/mongo_ruby_driver/query_formatter.rb +0 -88
  55. data/lib/appsignal/event_formatter/sequel/sql_formatter.rb +0 -13
  56. data/spec/lib/appsignal/event_formatter/mongo_ruby_driver/query_formatter_spec.rb +0 -115
  57. data/spec/lib/appsignal/event_formatter/sequel/sql_formatter_spec.rb +0 -22
@@ -15,7 +15,6 @@ module EnvHelpers
15
15
  :status => '200',
16
16
  :view_runtime => 500,
17
17
  :db_runtime => 500,
18
- :metadata => {:key => 'value'}
19
18
  ).merge(args)
20
19
  end
21
20
 
File without changes
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.0.7
4
+ version: 1.1.0.beta.1
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: 2016-03-24 00:00:00.000000000 Z
12
+ date: 2016-01-28 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rack
@@ -135,6 +135,7 @@ files:
135
135
  - ext/extconf.rb
136
136
  - gemfiles/capistrano2.gemfile
137
137
  - gemfiles/capistrano3.gemfile
138
+ - gemfiles/grape.gemfile
138
139
  - gemfiles/no_dependencies.gemfile
139
140
  - gemfiles/padrino.gemfile
140
141
  - gemfiles/rails-3.2.gemfile
@@ -154,10 +155,9 @@ files:
154
155
  - lib/appsignal/event_formatter/action_view/render_formatter.rb
155
156
  - lib/appsignal/event_formatter/active_record/instantiation_formatter.rb
156
157
  - lib/appsignal/event_formatter/active_record/sql_formatter.rb
157
- - lib/appsignal/event_formatter/mongo_ruby_driver/query_formatter.rb
158
+ - lib/appsignal/event_formatter/elastic_search/search_formatter.rb
158
159
  - lib/appsignal/event_formatter/moped/query_formatter.rb
159
160
  - lib/appsignal/event_formatter/net_http/request_formatter.rb
160
- - lib/appsignal/event_formatter/sequel/sql_formatter.rb
161
161
  - lib/appsignal/extension.rb
162
162
  - lib/appsignal/hooks.rb
163
163
  - lib/appsignal/hooks/celluloid.rb
@@ -175,6 +175,7 @@ files:
175
175
  - lib/appsignal/integrations/capistrano/capistrano_2_tasks.rb
176
176
  - lib/appsignal/integrations/capistrano/careful_logger.rb
177
177
  - lib/appsignal/integrations/delayed_job_plugin.rb
178
+ - lib/appsignal/integrations/grape.rb
178
179
  - lib/appsignal/integrations/mongo_ruby_driver.rb
179
180
  - lib/appsignal/integrations/padrino.rb
180
181
  - lib/appsignal/integrations/railtie.rb
@@ -198,6 +199,7 @@ files:
198
199
  - lib/generators/appsignal/appsignal_generator.rb
199
200
  - lib/generators/appsignal/templates/appsignal.yml
200
201
  - lib/sequel/extensions/appsignal_integration.rb
202
+ - lib/tasks/diag.rake
201
203
  - lib/vendor/active_support/notifications.rb
202
204
  - lib/vendor/active_support/notifications/fanout.rb
203
205
  - lib/vendor/active_support/notifications/instrumenter.rb
@@ -211,10 +213,9 @@ files:
211
213
  - spec/lib/appsignal/event_formatter/action_view/render_formatter_spec.rb
212
214
  - spec/lib/appsignal/event_formatter/active_record/instantiation_formatter_spec.rb
213
215
  - spec/lib/appsignal/event_formatter/active_record/sql_formatter_spec.rb
214
- - spec/lib/appsignal/event_formatter/mongo_ruby_driver/query_formatter_spec.rb
216
+ - spec/lib/appsignal/event_formatter/elastic_search/search_formatter_spec.rb
215
217
  - spec/lib/appsignal/event_formatter/moped/query_formatter_spec.rb
216
218
  - spec/lib/appsignal/event_formatter/net_http/request_formatter_spec.rb
217
- - spec/lib/appsignal/event_formatter/sequel/sql_formatter_spec.rb
218
219
  - spec/lib/appsignal/event_formatter_spec.rb
219
220
  - spec/lib/appsignal/extension_spec.rb
220
221
  - spec/lib/appsignal/hooks/celluloid_spec.rb
@@ -229,6 +230,7 @@ files:
229
230
  - spec/lib/appsignal/hooks/sidekiq_spec.rb
230
231
  - spec/lib/appsignal/hooks/unicorn_spec.rb
231
232
  - spec/lib/appsignal/hooks_spec.rb
233
+ - spec/lib/appsignal/integrations/grape_spec.rb
232
234
  - spec/lib/appsignal/integrations/mongo_ruby_driver_spec.rb
233
235
  - spec/lib/appsignal/integrations/padrino_spec.rb
234
236
  - spec/lib/appsignal/integrations/railtie_spec.rb
@@ -262,6 +264,7 @@ files:
262
264
  - spec/support/project_fixture/config/appsignal.yml
263
265
  - spec/support/project_fixture/log/.gitkeep
264
266
  - spec/support/rails/my_app.rb
267
+ - spec/support/stubs/delayed_job.rb
265
268
  homepage: https://github.com/appsignal/appsignal
266
269
  licenses:
267
270
  - MIT
@@ -278,12 +281,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
278
281
  version: '1.9'
279
282
  required_rubygems_version: !ruby/object:Gem::Requirement
280
283
  requirements:
281
- - - ">="
284
+ - - ">"
282
285
  - !ruby/object:Gem::Version
283
- version: '0'
286
+ version: 1.3.1
284
287
  requirements: []
285
288
  rubyforge_project:
286
- rubygems_version: 2.4.5
289
+ rubygems_version: 2.2.5
287
290
  signing_key:
288
291
  specification_version: 4
289
292
  summary: Logs performance and exception data from your app to appsignal.com
@@ -296,10 +299,9 @@ test_files:
296
299
  - spec/lib/appsignal/event_formatter/action_view/render_formatter_spec.rb
297
300
  - spec/lib/appsignal/event_formatter/active_record/instantiation_formatter_spec.rb
298
301
  - spec/lib/appsignal/event_formatter/active_record/sql_formatter_spec.rb
299
- - spec/lib/appsignal/event_formatter/mongo_ruby_driver/query_formatter_spec.rb
302
+ - spec/lib/appsignal/event_formatter/elastic_search/search_formatter_spec.rb
300
303
  - spec/lib/appsignal/event_formatter/moped/query_formatter_spec.rb
301
304
  - spec/lib/appsignal/event_formatter/net_http/request_formatter_spec.rb
302
- - spec/lib/appsignal/event_formatter/sequel/sql_formatter_spec.rb
303
305
  - spec/lib/appsignal/event_formatter_spec.rb
304
306
  - spec/lib/appsignal/extension_spec.rb
305
307
  - spec/lib/appsignal/hooks/celluloid_spec.rb
@@ -314,6 +316,7 @@ test_files:
314
316
  - spec/lib/appsignal/hooks/sidekiq_spec.rb
315
317
  - spec/lib/appsignal/hooks/unicorn_spec.rb
316
318
  - spec/lib/appsignal/hooks_spec.rb
319
+ - spec/lib/appsignal/integrations/grape_spec.rb
317
320
  - spec/lib/appsignal/integrations/mongo_ruby_driver_spec.rb
318
321
  - spec/lib/appsignal/integrations/padrino_spec.rb
319
322
  - spec/lib/appsignal/integrations/railtie_spec.rb
@@ -347,3 +350,4 @@ test_files:
347
350
  - spec/support/project_fixture/config/appsignal.yml
348
351
  - spec/support/project_fixture/log/.gitkeep
349
352
  - spec/support/rails/my_app.rb
353
+ - spec/support/stubs/delayed_job.rb
@@ -1,88 +0,0 @@
1
- module Appsignal
2
- class EventFormatter
3
- module MongoRubyDriver
4
- class QueryFormatter
5
- ALLOWED = {
6
- "find" => {
7
- "find" => :allow,
8
- "filter" => :sanitize_document
9
- },
10
- "count" => {
11
- "count" => :allow,
12
- "query" => :sanitize_document
13
- },
14
- "distinct" => {
15
- "distinct" => :allow,
16
- "key" => :allow,
17
- "query" => :sanitize_document
18
- },
19
- "insert" => {
20
- "insert" => :allow,
21
- "documents" => :deny_array,
22
- "ordered" => :allow
23
- },
24
- "update" => {
25
- "update" => :allow,
26
- "updates" => :sanitize_bulk,
27
- "ordered" => :allow
28
- },
29
- "findandmodify" => {
30
- "findandmodify" => :allow,
31
- "query" => :sanitize_document,
32
- "update" => :deny_array,
33
- "new" => :allow
34
- },
35
- "delete" => {
36
- "delete" => :allow,
37
- "deletes" => :sanitize_bulk,
38
- "ordered" => :allow
39
- },
40
- "bulk" => {
41
- "q" => :sanitize_document,
42
- "u" => :deny_array,
43
- "limit" => :allow,
44
- "multi" => :allow,
45
- "upsert" => :allow
46
- }
47
- }
48
-
49
- # Format command based on given strategy
50
- def self.format(strategy, command)
51
- # Stop processing if command is not a hash
52
- return {} unless command.is_a?(Hash)
53
-
54
- # Get the strategy and stop if it's not present
55
- strategies = ALLOWED[strategy.to_s]
56
- return {} unless strategies
57
-
58
- {}.tap do |hsh|
59
- command.each do |key, val|
60
- hsh[key] = self.apply_strategy(strategies[key], val)
61
- end
62
- end
63
- end
64
-
65
- # Applies strategy on hash values based on keys
66
- def self.apply_strategy(strategy, val)
67
- case strategy
68
- when :allow then val
69
- when :deny then '?'
70
- when :deny_array then '[?]'
71
- when :sanitize_document
72
- Appsignal::Utils.sanitize(val, true, :mongodb)
73
- when :sanitize_bulk
74
- if val.length > 1
75
- [
76
- self.format(:bulk, val.first),
77
- "[...]"
78
- ]
79
- else
80
- val.map { |v| self.format(:bulk, v) }
81
- end
82
- else '?'
83
- end
84
- end
85
- end
86
- end
87
- end
88
- end
@@ -1,13 +0,0 @@
1
- module Appsignal
2
- class EventFormatter
3
- module Sequel
4
- class SqlFormatter < Appsignal::EventFormatter
5
- register 'sql.sequel'
6
-
7
- def format(payload)
8
- [nil, payload[:sql], SQL_BODY_FORMAT]
9
- end
10
- end
11
- end
12
- end
13
- end
@@ -1,115 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Appsignal::EventFormatter::MongoRubyDriver::QueryFormatter do
4
- let(:formatter) { Appsignal::EventFormatter::MongoRubyDriver::QueryFormatter }
5
-
6
- describe ".format" do
7
- let(:strategy) { :find }
8
- let(:command) do
9
- {
10
- "find" => "users",
11
- "filter" => {"_id" => 1}
12
- }
13
- end
14
-
15
- it "should apply a strategy for each key" do
16
- expect( formatter ).to receive(:apply_strategy)
17
- .with(:sanitize_document, {"_id" => 1})
18
-
19
- expect( formatter ).to receive(:apply_strategy)
20
- .with(:allow, "users")
21
-
22
- formatter.format(strategy, command)
23
- end
24
-
25
- context "when strategy is unkown" do
26
- let(:strategy) { :bananas }
27
-
28
- it "should return an empty hash" do
29
- expect( formatter.format(strategy, command) ).to eql({})
30
- end
31
- end
32
-
33
- context "when command is not a hash " do
34
- let(:command) { :bananas }
35
-
36
- it "should return an empty hash" do
37
- expect( formatter.format(strategy, command) ).to eql({})
38
- end
39
- end
40
- end
41
-
42
- describe ".apply_strategy" do
43
- context "when strategy is allow" do
44
- let(:strategy) { :allow }
45
- let(:value) { {"_id" => 1} }
46
-
47
- it "should return the given value" do
48
- expect( formatter.apply_strategy(strategy, value) ).to eql(value)
49
- end
50
- end
51
-
52
- context "when strategy is deny" do
53
- let(:strategy) { :deny }
54
- let(:value) { {"_id" => 1} }
55
-
56
- it "should return a '?'" do
57
- expect( formatter.apply_strategy(strategy, value) ).to eql('?')
58
- end
59
- end
60
-
61
- context "when strategy is deny_array" do
62
- let(:strategy) { :deny_array }
63
- let(:value) { {"_id" => 1} }
64
-
65
- it "should return a sanitized array string" do
66
- expect( formatter.apply_strategy(strategy, value) ).to eql("[?]")
67
- end
68
- end
69
-
70
- context "when strategy is sanitize_document" do
71
- let(:strategy) { :sanitize_document }
72
- let(:value) { {"_id" => 1} }
73
-
74
- it "should return a sanitized document" do
75
- expect( formatter.apply_strategy(strategy, value) ).to eql({"_id" => '?'})
76
- end
77
- end
78
-
79
- context "when strategy is sanitize_bulk" do
80
- let(:strategy) { :sanitize_bulk }
81
- let(:value) { [{"q" => {"_id" => 1}, "u" => [{"foo" => "bar"}]}] }
82
-
83
- it "should return an array of sanitized bulk documents" do
84
- expect( formatter.apply_strategy(strategy, value) ).to eql([
85
- {"q" => {"_id" => '?'}, "u" => '[?]'}
86
- ])
87
- end
88
-
89
- context "when bulk has more than one update" do
90
- let(:value) do
91
- [
92
- {"q" => {"_id" => 1}, "u" => [{"foo" => "bar"}]},
93
- {"q" => {"_id" => 2}, "u" => [{"foo" => "baz"}]},
94
- ]
95
- end
96
-
97
- it "should return only the first value of sanitized bulk documents" do
98
- expect( formatter.apply_strategy(strategy, value) ).to eql([
99
- {"q" => {"_id" => '?'}, "u" => '[?]'},
100
- "[...]"
101
- ])
102
- end
103
- end
104
- end
105
-
106
- context "when strategy is missing" do
107
- let(:strategy) { nil }
108
- let(:value) { {"_id" => 1} }
109
-
110
- it "should return a '?'" do
111
- expect( formatter.apply_strategy(strategy, value) ).to eql('?')
112
- end
113
- end
114
- end
115
- 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