appsignal 0.8.7.alpha.1 → 0.8.7

Sign up to get free protection for your applications and to get access to all the features.
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