appsignal 0.8.7.alpha.1 → 0.8.7

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,15 +1,7 @@
1
1
  ---
2
- !binary "U0hBMQ==":
3
- metadata.gz: !binary |-
4
- MzE4ZGU1ZGJkN2Y2YmJiYTg4MjlkNjUwZDQ3Y2EzOTgyMzg2NDY0Zg==
5
- data.tar.gz: !binary |-
6
- OGY1OTYxMzk4MTMyNjcyM2NhMWE0NDY3NDVjNjZhYWEwODU3ODM1Mw==
7
- !binary "U0hBNTEy":
8
- metadata.gz: !binary |-
9
- ZGFmYzU4ZWUzNDg5NGMwNzU3ZmY3YWRmNTE0NTY0MGNkNWY3Yjk4MGI4MTYz
10
- NDQ0MzdkNzdmOGFkNWNiYzUwYjlkNDE4NmFmY2VkNDIwNDkxZWFjNTNkYTU1
11
- MTg4ZjUxZDdkMDI5NWI3ZDRmNWE4YzVjMWY0Y2IzMGY4OGJmM2I=
12
- data.tar.gz: !binary |-
13
- NWNlNTIwNWQ1ZWQ3YWFiZjU1M2UzYzYzNTdjYmI4YTM3NzMyYjAyYjAxYTc3
14
- NWM3N2ZiZmNhZDQwNjBhOTY3OGJiOTNhMzY4M2RmNjAxOTY5OWVjNWY3OWQ3
15
- NWI3NjZiYjgzYzQ2NmViZDMzOWUyYjQ1OTBjZDhhMWViNWIxZGU=
2
+ SHA1:
3
+ metadata.gz: 0422f4d917c222a6fd8bb36528e595d9cbad5b3a
4
+ data.tar.gz: f7c1da242200a9e04f4f907bd030f67cb41ca740
5
+ SHA512:
6
+ metadata.gz: bf2d64b01365bcfc82a493e864d3d0bc2c3702682996f05d2959c75a5a561762ee95b46e7669135aad011b75655f1eecc8dcb18391997b127713ab7c5f4315c3
7
+ data.tar.gz: 991d98d796a754b482cf94d1e6601db89bb67f87a4f9f6df77294478156ee675d5dcaeebec360b2c85b741f5c4d3a81948f66fdf16b01e8789255386bab355fc
data/.gitignore CHANGED
@@ -19,3 +19,4 @@ pickle-email-*.html
19
19
  Gemfile.lock
20
20
  gemfiles/*.lock
21
21
  .DS_Store
22
+ .ruby-version
@@ -1,5 +1,7 @@
1
1
  # 0.8.7
2
2
  * Dup process action event to avoid threading issue
3
+ * Rescue failing inspects in param sanitizer
4
+ * Add option to pause instrumentation
3
5
 
4
6
  # 0.8.6
5
7
  * Resque support (beta)
data/Rakefile CHANGED
@@ -90,3 +90,14 @@ task :spec do
90
90
  puts 'Running sinatra'
91
91
  system 'env BUNDLE_GEMFILE=gemfiles/sinatra.gemfile bundle exec rspec'
92
92
  end
93
+
94
+ task :console do
95
+ require 'irb'
96
+ require 'irb/completion'
97
+ require 'appsignal'
98
+
99
+ Appsignal.config = Appsignal::Config.new('.', :console)
100
+
101
+ ARGV.clear
102
+ IRB.start
103
+ end
@@ -129,6 +129,16 @@ module Appsignal
129
129
  def is_ignored_exception?(exception)
130
130
  Appsignal.config[:ignore_exceptions].include?(exception.class.name)
131
131
  end
132
+
133
+ # Convenience method for skipping instrumentations around a block of code.
134
+ #
135
+ # @since 0.8.7
136
+ def without_instrumentation
137
+ agent.paused = true
138
+ yield
139
+ ensure
140
+ agent.paused = false
141
+ end
132
142
  end
133
143
  end
134
144
 
@@ -3,7 +3,7 @@ module Appsignal
3
3
  ACTION = 'log_entries'.freeze
4
4
 
5
5
  attr_accessor :aggregator, :thread, :master_pid, :pid, :active, :sleep_time,
6
- :transmitter, :subscriber
6
+ :transmitter, :subscriber, :paused
7
7
 
8
8
  def initialize
9
9
  return unless Appsignal.active?
@@ -56,7 +56,7 @@ module Appsignal
56
56
  elsif event.name.start_with?('perform_job')
57
57
  Appsignal::Transaction.current.set_perform_job_event(event)
58
58
  end
59
- Appsignal::Transaction.current.add_event(event)
59
+ Appsignal::Transaction.current.add_event(event) unless paused
60
60
  end
61
61
  end
62
62
  end
@@ -53,6 +53,9 @@ module Appsignal
53
53
 
54
54
  def inspected(value)
55
55
  value.inspect
56
+ rescue
57
+ # It turns out that sometimes inspect can fail
58
+ "#<#{value.class.to_s}/>"
56
59
  end
57
60
  end
58
61
  end
@@ -1,3 +1,3 @@
1
1
  module Appsignal
2
- VERSION = '0.8.7.alpha.1'
2
+ VERSION = '0.8.7'
3
3
  end
@@ -94,7 +94,14 @@ describe Appsignal::Agent do
94
94
  end
95
95
 
96
96
  context "handling events" do
97
- before do
97
+ before(:each) do
98
+ # Unsubscribe previous notification subscribers
99
+ ActiveSupport::Notifications.notifier.instance_variable_get(:@subscribers).
100
+ reject { |sub| sub.instance_variable_get(:@pattern).is_a? String }.
101
+ each { |sub| ActiveSupport::Notifications.unsubscribe(sub) }
102
+ # And re-subscribe with just one subscriber
103
+ Appsignal.agent.subscribe
104
+
98
105
  Appsignal::Transaction.create('123', {})
99
106
  end
100
107
 
@@ -113,6 +120,16 @@ describe Appsignal::Agent do
113
120
  ActiveSupport::Notifications.instrument 'render_template'
114
121
  end
115
122
 
123
+ context "when paused" do
124
+ it "should add a normal event" do
125
+ Appsignal::Transaction.current.should_not_receive(:add_event)
126
+
127
+ Appsignal.without_instrumentation do
128
+ ActiveSupport::Notifications.instrument 'moo'
129
+ end
130
+ end
131
+ end
132
+
116
133
  it "should add and set a process action event" do
117
134
  Appsignal::Transaction.current.should_receive(:set_process_action_event).with(
118
135
  kind_of(ActiveSupport::Notifications::Event)
@@ -1,5 +1,11 @@
1
1
  require 'spec_helper'
2
2
 
3
+ class ErrorOnInspect
4
+ def inspect
5
+ raise 'Error'
6
+ end
7
+ end
8
+
3
9
  describe Appsignal::Transaction::ParamsSanitizer do
4
10
  let(:klass) { Appsignal::Transaction::ParamsSanitizer }
5
11
  let(:file) { uploaded_file }
@@ -16,7 +22,8 @@ describe Appsignal::Transaction::ParamsSanitizer do
16
22
  {
17
23
  :key => 'value',
18
24
  :file => file,
19
- }
25
+ },
26
+ ErrorOnInspect.new
20
27
  ]
21
28
  }
22
29
  }
@@ -47,6 +54,7 @@ describe Appsignal::Transaction::ParamsSanitizer do
47
54
  its([1]) { should == 'else' }
48
55
  its([2]) { should be_instance_of String }
49
56
  its([2]) { should include '::UploadedFile' }
57
+ its([4]) { should == '#<ErrorOnInspect/>' }
50
58
 
51
59
  context "nested hash" do
52
60
  subject { params[:hash][:nested_array][3] }
@@ -335,5 +335,23 @@ describe Appsignal do
335
335
  Appsignal.add_exception(nil)
336
336
  end
337
337
  end
338
+
339
+ describe ".without_instrumentation" do
340
+ let(:agent) { double }
341
+ before do
342
+ Appsignal.stub(:agent => agent)
343
+ end
344
+
345
+ it "should pause and unpause the agent around the block" do
346
+ agent.should_receive(:paused=).with(true)
347
+ agent.should_receive(:paused=).with(false)
348
+ end
349
+
350
+ after do
351
+ Appsignal.without_instrumentation do
352
+ # nothing
353
+ end
354
+ end
355
+ end
338
356
  end
339
357
  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.8.7.alpha.1
4
+ version: 0.8.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Robert Beekman
@@ -12,118 +12,118 @@ authors:
12
12
  autorequire:
13
13
  bindir: bin
14
14
  cert_chain: []
15
- date: 2014-03-01 00:00:00.000000000 Z
15
+ date: 2014-03-05 00:00:00.000000000 Z
16
16
  dependencies:
17
17
  - !ruby/object:Gem::Dependency
18
18
  name: activesupport
19
19
  requirement: !ruby/object:Gem::Requirement
20
20
  requirements:
21
- - - ! '>='
21
+ - - ">="
22
22
  - !ruby/object:Gem::Version
23
23
  version: '3.0'
24
24
  type: :runtime
25
25
  prerelease: false
26
26
  version_requirements: !ruby/object:Gem::Requirement
27
27
  requirements:
28
- - - ! '>='
28
+ - - ">="
29
29
  - !ruby/object:Gem::Version
30
30
  version: '3.0'
31
31
  - !ruby/object:Gem::Dependency
32
32
  name: rack
33
33
  requirement: !ruby/object:Gem::Requirement
34
34
  requirements:
35
- - - ! '>='
35
+ - - ">="
36
36
  - !ruby/object:Gem::Version
37
37
  version: '0'
38
38
  type: :runtime
39
39
  prerelease: false
40
40
  version_requirements: !ruby/object:Gem::Requirement
41
41
  requirements:
42
- - - ! '>='
42
+ - - ">="
43
43
  - !ruby/object:Gem::Version
44
44
  version: '0'
45
45
  - !ruby/object:Gem::Dependency
46
46
  name: thread_safe
47
47
  requirement: !ruby/object:Gem::Requirement
48
48
  requirements:
49
- - - ! '>='
49
+ - - ">="
50
50
  - !ruby/object:Gem::Version
51
51
  version: '0'
52
52
  type: :runtime
53
53
  prerelease: false
54
54
  version_requirements: !ruby/object:Gem::Requirement
55
55
  requirements:
56
- - - ! '>='
56
+ - - ">="
57
57
  - !ruby/object:Gem::Version
58
58
  version: '0'
59
59
  - !ruby/object:Gem::Dependency
60
60
  name: rake
61
61
  requirement: !ruby/object:Gem::Requirement
62
62
  requirements:
63
- - - ! '>='
63
+ - - ">="
64
64
  - !ruby/object:Gem::Version
65
65
  version: '0'
66
66
  type: :development
67
67
  prerelease: false
68
68
  version_requirements: !ruby/object:Gem::Requirement
69
69
  requirements:
70
- - - ! '>='
70
+ - - ">="
71
71
  - !ruby/object:Gem::Version
72
72
  version: '0'
73
73
  - !ruby/object:Gem::Dependency
74
74
  name: rspec
75
75
  requirement: !ruby/object:Gem::Requirement
76
76
  requirements:
77
- - - ! '>='
77
+ - - ">="
78
78
  - !ruby/object:Gem::Version
79
79
  version: '0'
80
80
  type: :development
81
81
  prerelease: false
82
82
  version_requirements: !ruby/object:Gem::Requirement
83
83
  requirements:
84
- - - ! '>='
84
+ - - ">="
85
85
  - !ruby/object:Gem::Version
86
86
  version: '0'
87
87
  - !ruby/object:Gem::Dependency
88
88
  name: capistrano
89
89
  requirement: !ruby/object:Gem::Requirement
90
90
  requirements:
91
- - - <
91
+ - - "<"
92
92
  - !ruby/object:Gem::Version
93
93
  version: '3.0'
94
94
  type: :development
95
95
  prerelease: false
96
96
  version_requirements: !ruby/object:Gem::Requirement
97
97
  requirements:
98
- - - <
98
+ - - "<"
99
99
  - !ruby/object:Gem::Version
100
100
  version: '3.0'
101
101
  - !ruby/object:Gem::Dependency
102
102
  name: pry
103
103
  requirement: !ruby/object:Gem::Requirement
104
104
  requirements:
105
- - - ! '>='
105
+ - - ">="
106
106
  - !ruby/object:Gem::Version
107
107
  version: '0'
108
108
  type: :development
109
109
  prerelease: false
110
110
  version_requirements: !ruby/object:Gem::Requirement
111
111
  requirements:
112
- - - ! '>='
112
+ - - ">="
113
113
  - !ruby/object:Gem::Version
114
114
  version: '0'
115
115
  - !ruby/object:Gem::Dependency
116
116
  name: timecop
117
117
  requirement: !ruby/object:Gem::Requirement
118
118
  requirements:
119
- - - ! '>='
119
+ - - ">="
120
120
  - !ruby/object:Gem::Version
121
121
  version: '0'
122
122
  type: :development
123
123
  prerelease: false
124
124
  version_requirements: !ruby/object:Gem::Requirement
125
125
  requirements:
126
- - - ! '>='
126
+ - - ">="
127
127
  - !ruby/object:Gem::Version
128
128
  version: '0'
129
129
  description: The official appsignal.com gem
@@ -134,9 +134,8 @@ executables:
134
134
  extensions: []
135
135
  extra_rdoc_files: []
136
136
  files:
137
- - .gitignore
138
- - .ruby-version
139
- - .travis.yml
137
+ - ".gitignore"
138
+ - ".travis.yml"
140
139
  - CHANGELOG.md
141
140
  - Gemfile
142
141
  - LICENSE
@@ -236,17 +235,17 @@ require_paths:
236
235
  - lib
237
236
  required_ruby_version: !ruby/object:Gem::Requirement
238
237
  requirements:
239
- - - ! '>='
238
+ - - ">="
240
239
  - !ruby/object:Gem::Version
241
240
  version: 1.9.3
242
241
  required_rubygems_version: !ruby/object:Gem::Requirement
243
242
  requirements:
244
- - - ! '>'
243
+ - - ">="
245
244
  - !ruby/object:Gem::Version
246
- version: 1.3.1
245
+ version: '0'
247
246
  requirements: []
248
247
  rubyforge_project:
249
- rubygems_version: 2.0.3
248
+ rubygems_version: 2.2.2
250
249
  signing_key:
251
250
  specification_version: 4
252
251
  summary: Logs performance and exception data from your app toappsignal.com
@@ -1 +0,0 @@
1
- 1.9.3-p392