exceptional 2.0.2 → 2.0.3
Sign up to get free protection for your applications and to get access to all the features.
- data/exceptional.gemspec +1 -1
- data/init.rb +0 -15
- data/lib/exceptional.rb +1 -1
- data/lib/exceptional/exception_data.rb +10 -1
- data/spec/exceptional/exception_data_spec.rb +23 -8
- data/spec/rails_integration_spec.rb +1 -1
- metadata +2 -2
data/exceptional.gemspec
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
2
|
Gem::Specification.new do |s|
|
3
3
|
s.name = %q{exceptional}
|
4
|
-
s.version = "2.0.
|
4
|
+
s.version = "2.0.3"
|
5
5
|
s.authors = ["Contrast"]
|
6
6
|
s.summary = %q{Exceptional is the core Ruby library for communicating with http://getexceptional.com (hosted error tracking service)}
|
7
7
|
s.description = %q{Exceptional is the core Ruby library for communicating with http://getexceptional.com (hosted error tracking service). Use it to find out about errors that happen in your live app. It captures lots of helpful information to help you fix the errors.}
|
data/init.rb
CHANGED
@@ -1,20 +1,5 @@
|
|
1
1
|
require 'exceptional'
|
2
2
|
|
3
|
-
unless Object.const_defined?(:JSON)
|
4
|
-
begin
|
5
|
-
require 'json'
|
6
|
-
rescue LoadError
|
7
|
-
begin
|
8
|
-
require 'json-ruby'
|
9
|
-
rescue LoadError
|
10
|
-
require 'json_pure'
|
11
|
-
end
|
12
|
-
end
|
13
|
-
end
|
14
|
-
unless Object.const_defined?(:JSON)
|
15
|
-
raise "Could not load json gem; make sure you install one of json_pure, json-ruby, or the C-based json gem."
|
16
|
-
end
|
17
|
-
|
18
3
|
# If old plugin still installed then we don't want to install this one.
|
19
4
|
# In production environments we should continue to work as before, but in development/test we should
|
20
5
|
# advise how to correct the problem and exit
|
data/lib/exceptional.rb
CHANGED
@@ -32,7 +32,16 @@ module Exceptional
|
|
32
32
|
end
|
33
33
|
|
34
34
|
def to_json
|
35
|
-
|
35
|
+
begin
|
36
|
+
to_hash.to_json
|
37
|
+
rescue NoMethodError
|
38
|
+
begin
|
39
|
+
require 'json'
|
40
|
+
return to_hash.to_json
|
41
|
+
rescue StandardError
|
42
|
+
raise StandardError.new("You need a json gem/library installed to send errors to Exceptional (Object.to_json not defined). \nInstall json_pure, yajl-ruby, json-jruby, or the c-based json gem")
|
43
|
+
end
|
44
|
+
end
|
36
45
|
end
|
37
46
|
|
38
47
|
def uniqueness_hash
|
@@ -1,6 +1,5 @@
|
|
1
1
|
require File.dirname(__FILE__) + '/../spec_helper'
|
2
2
|
require 'digest/md5'
|
3
|
-
require 'json'
|
4
3
|
|
5
4
|
class Exceptional::FunkyError < StandardError
|
6
5
|
def backtrace
|
@@ -8,13 +7,28 @@ class Exceptional::FunkyError < StandardError
|
|
8
7
|
end
|
9
8
|
end
|
10
9
|
|
10
|
+
describe Exceptional::ControllerExceptionData do
|
11
|
+
it "raises useful error when to_json isn't available on to_hash" do
|
12
|
+
begin
|
13
|
+
data = Exceptional::ExceptionData.new(Exceptional::FunkyError.new)
|
14
|
+
hash_without_json = {}
|
15
|
+
hash_without_json.stub!(:to_json).and_raise(NoMethodError)
|
16
|
+
data.stub!(:to_hash).and_return(hash_without_json)
|
17
|
+
data.to_json
|
18
|
+
fail 'expects to raise and error'
|
19
|
+
rescue StandardError => e
|
20
|
+
e.message.should =~ /to_json/
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
11
25
|
describe Exceptional::ControllerExceptionData, 'when no request/controller/params' do
|
12
26
|
before :each do
|
13
27
|
ENV['LOGNAME'] = 'bob'
|
14
28
|
ENV['SOMEVAR'] = 'something'
|
15
29
|
ENV['HTTP_SOMETHING'] = 'should be stripped'
|
16
30
|
::RAILS_ENV = 'test' unless defined?(RAILS_ENV)
|
17
|
-
Time.stub!(:now).and_return(Time.mktime(1970,1,1))
|
31
|
+
Time.stub!(:now).and_return(Time.mktime(1970, 1, 1))
|
18
32
|
error = Exceptional::FunkyError.new('some message')
|
19
33
|
@data = Exceptional::ControllerExceptionData.new(error)
|
20
34
|
@hash = @data.to_hash
|
@@ -28,11 +42,12 @@ describe Exceptional::ControllerExceptionData, 'when no request/controller/param
|
|
28
42
|
error_hash['occurred_at'].should == Time.now.strftime("%Y%m%d %H:%M:%S %Z")
|
29
43
|
client_hash = @hash['client']
|
30
44
|
client_hash['name'].should == Exceptional::CLIENT_NAME
|
31
|
-
client_hash['version'].should == Exceptional::VERSION
|
45
|
+
client_hash['version'].should == Exceptional::VERSION
|
32
46
|
client_hash['protocol_version'].should == Exceptional::PROTOCOL_VERSION
|
33
47
|
end
|
34
48
|
|
35
49
|
it "generates parseable json" do
|
50
|
+
require 'json'
|
36
51
|
JSON.parse(@data.to_json)['exception']['exception_class'].should == 'Exceptional::FunkyError'
|
37
52
|
end
|
38
53
|
|
@@ -53,13 +68,13 @@ end
|
|
53
68
|
|
54
69
|
describe Exceptional::ControllerExceptionData, 'with request/controller/params' do
|
55
70
|
class Exceptional::SomeController < ActionController::Base
|
56
|
-
|
71
|
+
filter_parameter_logging :filter_me
|
57
72
|
end
|
58
|
-
|
73
|
+
|
59
74
|
before :each do
|
60
75
|
@controller = Exceptional::SomeController.new
|
61
76
|
@request = ActionController::TestRequest.new({'action' => 'some_action' })
|
62
|
-
@request.request_uri = '/some_path?var1=abc'
|
77
|
+
@request.request_uri = '/some_path?var1=abc'
|
63
78
|
@request.stub!(:parameters).and_return({'var1' => 'abc', 'action' => 'some_action', 'filter_me' => 'private'})
|
64
79
|
@request.stub!(:request_method).and_return(:get)
|
65
80
|
@request.stub!(:remote_ip).and_return('1.2.3.4')
|
@@ -87,8 +102,8 @@ describe Exceptional::ControllerExceptionData, 'with request/controller/params'
|
|
87
102
|
end
|
88
103
|
end
|
89
104
|
crazy = Crazy.new
|
90
|
-
input = {'crazy' => crazy, :simple => '123', :some_hash => {'1' => '2'}, :array => ['1','2']}
|
91
|
-
Exceptional::ControllerExceptionData.sanitize_hash(input).should == {'crazy' => crazy.to_s, :simple => '123', :some_hash => {'1' => '2'}, :array => ['1','2']}
|
105
|
+
input = {'crazy' => crazy, :simple => '123', :some_hash => {'1' => '2'}, :array => ['1', '2']}
|
106
|
+
Exceptional::ControllerExceptionData.sanitize_hash(input).should == {'crazy' => crazy.to_s, :simple => '123', :some_hash => {'1' => '2'}, :array => ['1', '2']}
|
92
107
|
end
|
93
108
|
|
94
109
|
it "to_strings regex because JSON.parse(/aa/.to_json) doesn't work" do
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: exceptional
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.0.
|
4
|
+
version: 2.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Contrast
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2010-01-
|
12
|
+
date: 2010-01-05 00:00:00 +00:00
|
13
13
|
default_executable:
|
14
14
|
dependencies: []
|
15
15
|
|