yeller_ruby 0.2.0 → 0.2.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 5853d9f2c5962d8699ee7fed01219c03b80cd630
4
- data.tar.gz: 7fb9baee25cf724a77c8f009204226987e99d1cc
3
+ metadata.gz: 62c1fef8f69ab232a2448bbaa4b13d1b222203f0
4
+ data.tar.gz: f5db5b74752b847b96001c1f6ef28e1d06c17547
5
5
  SHA512:
6
- metadata.gz: f6f42956eeb821511c14cb9b505011a0e2792870e7f642005e15016e3ab1e5508524b8751029ff712d7569b0e2cb362e906fa089808b96d851a096ddb39c2c1a
7
- data.tar.gz: 5b3e9c26c3e0a9ab9f56605ce254c52bded934e80bd4efe7c0c72353ff2df15520ed55de49d46c3acdc615f9b0016284a55bd08b3852c6af7d7358a2d38b6a7e
6
+ metadata.gz: 5ba53bdecbb37074b01b91f55b96b10d77408f5e614879009a051ca659d3acf238b4232f45648d2866710010002906f8952dfc5ce2ed1c714689678704c10b72
7
+ data.tar.gz: 0184cdcb3d444ab50c9e5fdcad0329f29d2a6f14fa0db371374351866127a93b01a5ff16e1ff87308c4565a6288c464e8b15b04f61001bf5a83f2d2365bbce6d
data/lib/yeller/client.rb CHANGED
@@ -2,20 +2,23 @@ module Yeller
2
2
  class Client
3
3
  attr_reader :backtrace_filter, :token
4
4
 
5
- def initialize(servers, token, startup_params, backtrace_filter, error_handler)
5
+ def initialize(servers, token, startup_params, backtrace_filter, error_handler, skip_exceptions)
6
6
  @servers = servers
7
7
  @last_server = rand(servers.size)
8
8
  @startup_params = startup_params
9
9
  @token = token
10
- @error_handler = error_handler
11
10
  @backtrace_filter = backtrace_filter
11
+ @error_handler = error_handler
12
+ @skip_exceptions = skip_exceptions
12
13
  @reported_error = false
13
14
  end
14
15
 
15
16
  def report(exception, options={})
16
- hash = ExceptionFormatter.format(exception, backtrace_filter, options)
17
- serialized = JSON.dump(@startup_params.merge(hash))
18
- report_with_roundtrip(serialized, 0)
17
+ unless @skip_exceptions.skip?(exception)
18
+ hash = ExceptionFormatter.format(exception, backtrace_filter, options)
19
+ serialized = JSON.dump(@startup_params.merge(hash))
20
+ report_with_roundtrip(serialized, 0)
21
+ end
19
22
  end
20
23
 
21
24
  def report_with_roundtrip(serialized, error_count)
@@ -11,11 +11,23 @@ module Yeller
11
11
  Yeller::SecureServer.new("collector5.yellerapp.com", 443),
12
12
  ]
13
13
 
14
+ DEFAULT_SKIPPED_EXCEPTIONS = [
15
+ 'AbstractController::ActionNotFound',
16
+ 'ActionController::InvalidAuthenticityToken',
17
+ 'ActionController::RoutingError',
18
+ 'ActionController::UnknownAction',
19
+ 'ActiveRecord::RecordNotFound',
20
+ 'CGI::Session::CookieStore::TamperedWithCookie',
21
+ 'Mongoid::Errors::DocumentNotFound',
22
+ 'Sinatra::NotFound'
23
+ ]
24
+
14
25
  def initialize
15
26
  @servers = DEFAULT_SERVERS
16
27
  @startup_params = {}
17
28
  @error_handler = Yeller::LogErrorHandler.new
18
29
  @development_environments = Set.new(['development', 'test'])
30
+ @skip_exceptions = DEFAULT_SKIPPED_EXCEPTIONS
19
31
  end
20
32
 
21
33
  def remove_default_servers
@@ -100,5 +112,25 @@ module Yeller
100
112
  def project_root=(new_project_root)
101
113
  @project_root = new_project_root
102
114
  end
115
+
116
+ def skip_exceptions
117
+ Yeller::SkipExceptions.new(
118
+ @skip_exceptions || [],
119
+ @skip_exceptions_callback || Proc.new {|e| false}
120
+ )
121
+ end
122
+
123
+ def skip_exceptions=(skip_exceptions)
124
+ @skip_exceptions = skip_exceptions
125
+ end
126
+
127
+ def add_skip_exceptions(skip_exceptions)
128
+ @skip_exceptions ||= []
129
+ @skip_exceptions = @skip_exceptions + skip_exceptions
130
+ end
131
+
132
+ def skip_exceptions_callback(skip_exceptions_callback)
133
+ @skip_exceptions_callback = skip_exceptions_callback
134
+ end
103
135
  end
104
136
  end
@@ -0,0 +1,14 @@
1
+ require 'set'
2
+ module Yeller
3
+ class SkipExceptions
4
+ def initialize(error_names, callback)
5
+ @error_names = Set.new(error_names)
6
+ @callback = callback
7
+ end
8
+
9
+ def skip?(exception)
10
+ @error_names.include?(exception.class.name) ||
11
+ @callback.call(exception)
12
+ end
13
+ end
14
+ end
@@ -1,3 +1,3 @@
1
1
  module Yeller
2
- VERSION = "0.2.0"
2
+ VERSION = "0.2.1"
3
3
  end
data/lib/yeller.rb CHANGED
@@ -7,6 +7,7 @@ require File.expand_path('../yeller/ignoring_client', __FILE__)
7
7
  require File.expand_path('../yeller/configuration', __FILE__)
8
8
  require File.expand_path('../yeller/exception_formatter', __FILE__)
9
9
  require File.expand_path('../yeller/server', __FILE__)
10
+ require File.expand_path('../yeller/skip_exceptions', __FILE__)
10
11
  require File.expand_path('../yeller/version', __FILE__)
11
12
  require File.expand_path('../yeller/startup_params', __FILE__)
12
13
  require File.expand_path('../yeller/log_error_handler', __FILE__)
@@ -33,7 +34,8 @@ module Yeller
33
34
  config.token,
34
35
  Yeller::StartupParams.defaults(config.startup_params),
35
36
  Yeller::BacktraceFilter.new(config.backtrace_filename_filters, config.backtrace_method_filters),
36
- config.error_handler
37
+ config.error_handler,
38
+ config.skip_exceptions
37
39
  )
38
40
  end
39
41
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: yeller_ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tom Crayford
@@ -70,6 +70,7 @@ files:
70
70
  - lib/yeller/rails.rb
71
71
  - lib/yeller/rails/tasks.rb
72
72
  - lib/yeller/server.rb
73
+ - lib/yeller/skip_exceptions.rb
73
74
  - lib/yeller/startup_params.rb
74
75
  - lib/yeller/verify_log.rb
75
76
  - lib/yeller/version.rb