crashlog 1.0.1 → 1.0.2
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.
- data/Gemfile +2 -3
- data/Gemfile.lock +5 -8
- data/README.md +10 -2
- data/crashlog.gemspec +5 -6
- data/lib/crash_log/configuration.rb +2 -1
- data/lib/crash_log/rails/controller_methods.rb +1 -0
- data/lib/crash_log/railtie.rb +17 -9
- data/lib/crash_log/reporter.rb +9 -6
- data/lib/crash_log/version.rb +1 -1
- data/lib/tasks/crash_log.rake +20 -0
- data/spec/crash_log/initializer_spec.rb +4 -4
- data/spec/crash_log/payload_spec.rb +1 -1
- data/spec/crash_log/reporter_spec.rb +1 -61
- data/spec/requests/rails_controller_rescue_spec.rb +51 -48
- metadata +26 -26
- data/lib/crash_log/configuration.bak.rb +0 -199
data/Gemfile
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
source
|
1
|
+
source :rubygems
|
2
2
|
|
3
3
|
# Specify your gem's dependencies in crashlog.gemspec
|
4
4
|
gemspec
|
@@ -8,7 +8,6 @@ gem 'guard-rspec'
|
|
8
8
|
gem 'uuid'
|
9
9
|
gem 'json_spec'
|
10
10
|
gem 'rake', '~> 0.9.2'
|
11
|
-
gem 'rails', '3.2.7'
|
12
|
-
gem 'pg'
|
11
|
+
gem 'rails', '~> 3.2.7'
|
13
12
|
gem 'delorean'
|
14
13
|
gem 'rack-test', :git => 'git://github.com/brynary/rack-test.git'
|
data/Gemfile.lock
CHANGED
@@ -8,17 +8,17 @@ GIT
|
|
8
8
|
PATH
|
9
9
|
remote: .
|
10
10
|
specs:
|
11
|
-
crashlog (1.0.
|
11
|
+
crashlog (1.0.1)
|
12
12
|
activesupport
|
13
13
|
crashlog-auth-hmac (~> 1.1.6)
|
14
|
-
faraday
|
14
|
+
faraday (~> 0.8.4)
|
15
15
|
hashr
|
16
|
+
multi_json (~> 1.3.6)
|
16
17
|
rabl (>= 0.6.14)
|
17
18
|
uuid
|
18
|
-
yajl-ruby
|
19
19
|
|
20
20
|
GEM
|
21
|
-
remote:
|
21
|
+
remote: http://rubygems.org/
|
22
22
|
specs:
|
23
23
|
actionmailer (3.2.7)
|
24
24
|
actionpack (= 3.2.7)
|
@@ -84,7 +84,6 @@ GEM
|
|
84
84
|
mime-types (1.19)
|
85
85
|
multi_json (1.3.6)
|
86
86
|
multipart-post (1.1.5)
|
87
|
-
pg (0.14.0)
|
88
87
|
polyglot (0.3.3)
|
89
88
|
rabl (0.7.2)
|
90
89
|
activesupport (>= 2.3.14)
|
@@ -143,7 +142,6 @@ GEM
|
|
143
142
|
tzinfo (0.3.33)
|
144
143
|
uuid (2.3.5)
|
145
144
|
macaddr (~> 1.0)
|
146
|
-
yajl-ruby (1.1.0)
|
147
145
|
|
148
146
|
PLATFORMS
|
149
147
|
ruby
|
@@ -153,9 +151,8 @@ DEPENDENCIES
|
|
153
151
|
delorean
|
154
152
|
guard-rspec
|
155
153
|
json_spec
|
156
|
-
pg
|
157
154
|
rack-test!
|
158
|
-
rails (
|
155
|
+
rails (~> 3.2.7)
|
159
156
|
rake (~> 0.9.2)
|
160
157
|
rspec-rails
|
161
158
|
uuid
|
data/README.md
CHANGED
@@ -21,13 +21,20 @@ Or install it yourself as:
|
|
21
21
|
|
22
22
|
## Configuration
|
23
23
|
|
24
|
+
### Basic:
|
25
|
+
|
24
26
|
```ruby
|
25
27
|
CrashLog.configuration do |config|
|
26
|
-
config.api_key
|
27
|
-
config.
|
28
|
+
config.api_key = "Your API Key"
|
29
|
+
config.secret = "Project Project ID"
|
28
30
|
end
|
29
31
|
```
|
30
32
|
|
33
|
+
### Advanced
|
34
|
+
|
35
|
+
See [configuration.rb](/crashlog/crashlog/blob/master/lib/crash_log/configuration.rb)
|
36
|
+
for available options.
|
37
|
+
|
31
38
|
## Contributing
|
32
39
|
|
33
40
|
1. Fork it
|
@@ -39,3 +46,4 @@ end
|
|
39
46
|
## Contributors
|
40
47
|
|
41
48
|
- Ivan Vanderbyl
|
49
|
+
- Mark Wolfe
|
data/crashlog.gemspec
CHANGED
@@ -2,10 +2,10 @@
|
|
2
2
|
require File.expand_path('../lib/crash_log/version', __FILE__)
|
3
3
|
|
4
4
|
Gem::Specification.new do |gem|
|
5
|
-
gem.authors = ["
|
5
|
+
gem.authors = ["Ivan Vanderbyl"]
|
6
6
|
gem.email = ["support@crashlog.io"]
|
7
7
|
gem.description = %q{CrashLog Exception reporter}
|
8
|
-
gem.summary = %q{CrashLog is an exception handler for
|
8
|
+
gem.summary = %q{CrashLog is an exception handler for ambitious applications}
|
9
9
|
gem.homepage = "http://crashlog.io"
|
10
10
|
|
11
11
|
gem.files = `git ls-files`.split($\)
|
@@ -14,13 +14,12 @@ Gem::Specification.new do |gem|
|
|
14
14
|
gem.name = "crashlog"
|
15
15
|
gem.require_paths = ["lib"]
|
16
16
|
gem.version = CrashLog::VERSION
|
17
|
-
gem.platform = Gem::Platform::RUBY
|
18
17
|
|
19
18
|
gem.add_dependency("activesupport")
|
20
|
-
gem.add_dependency("faraday")
|
19
|
+
gem.add_dependency("faraday", '~> 0.8.4')
|
20
|
+
gem.add_dependency("multi_json", '~> 1.3.6')
|
21
21
|
gem.add_dependency("crashlog-auth-hmac", '~> 1.1.6')
|
22
|
-
gem.add_dependency("
|
23
|
-
gem.add_dependency("rabl", '>= 0.6.14')
|
22
|
+
gem.add_dependency("rabl", '>= 0.6.14')
|
24
23
|
gem.add_dependency("uuid")
|
25
24
|
gem.add_dependency("hashr")
|
26
25
|
end
|
data/lib/crash_log/railtie.rb
CHANGED
@@ -4,27 +4,35 @@ require 'rails'
|
|
4
4
|
# Rails 3.x support
|
5
5
|
module CrashLog
|
6
6
|
class Railtie < ::Rails::Railtie
|
7
|
+
rake_tasks do
|
8
|
+
load "crash_log/tasks/crash_log.rake"
|
9
|
+
end
|
7
10
|
|
8
|
-
config.
|
11
|
+
config.before_initialize do
|
9
12
|
CrashLog.configure(true) do |config|
|
10
13
|
config.logger = ::Rails.logger
|
11
14
|
config.stage = ::Rails.env
|
12
15
|
config.project_root = ::Rails.root
|
13
16
|
config.framework = "Rails: #{::Rails::VERSION::STRING}"
|
14
|
-
|
15
|
-
|
16
|
-
initializer "crash_log.use_rack_middleware" do |app|
|
17
|
-
app.config.middleware.insert 0, "CrashLog::Rack"
|
17
|
+
config.params_filters += Rails.configuration.filter_parameters
|
18
18
|
end
|
19
19
|
|
20
20
|
# Attach our Rails Controller methods
|
21
|
-
|
22
|
-
|
23
|
-
|
21
|
+
if defined?(::ActionController::Base)
|
22
|
+
require "crash_log/rails/controller_methods"
|
23
|
+
::ActionController::Base.send(:include, CrashLog::Rails::ControllerMethods)
|
24
|
+
end
|
25
|
+
end
|
24
26
|
|
25
|
-
|
27
|
+
initializer "crash_log.use_rack_middleware" do |app|
|
28
|
+
begin
|
29
|
+
app.config.middleware.insert_after ActionDispatch::DebugExceptions, "CrashLog::Rack"
|
30
|
+
rescue
|
31
|
+
app.config.middleware.use "CrashLog::Rack"
|
26
32
|
end
|
33
|
+
end
|
27
34
|
|
35
|
+
config.after_initialize do
|
28
36
|
if defined?(::ActionDispatch::DebugExceptions)
|
29
37
|
# We should catch the exceptions in ActionDispatch::DebugExceptions in Rails 3.2.x.
|
30
38
|
require 'crash_log/rails/middleware/debug_exception_catcher'
|
data/lib/crash_log/reporter.rb
CHANGED
@@ -2,7 +2,6 @@ require 'faraday'
|
|
2
2
|
require 'faraday/request/hmac_authentication'
|
3
3
|
require 'uuid'
|
4
4
|
require 'multi_json'
|
5
|
-
require 'yajl'
|
6
5
|
|
7
6
|
module CrashLog
|
8
7
|
class Reporter
|
@@ -19,7 +18,12 @@ module CrashLog
|
|
19
18
|
@endpoint = config.endpoint
|
20
19
|
@announce_endpoint = config.announce == true ?
|
21
20
|
config.announce_endpoint : nil
|
22
|
-
|
21
|
+
|
22
|
+
# Old versions of MultiJson don't support use.
|
23
|
+
# TODO: Figure out what they do support. IV.
|
24
|
+
if MultiJson.respond_to?(:use)
|
25
|
+
MultiJson.use(config.json_parser || MultiJson.default_adapter)
|
26
|
+
end
|
23
27
|
end
|
24
28
|
|
25
29
|
def notify(payload)
|
@@ -73,7 +77,9 @@ module CrashLog
|
|
73
77
|
connection.post do |req|
|
74
78
|
req.url(endpoint)
|
75
79
|
req.headers['Content-Type'] = 'application/json; charset=UTF-8'
|
76
|
-
req.
|
80
|
+
req.options[:timeout] = config.http_read_timeout
|
81
|
+
req.options[:open_timeout] = config.http_open_timeout
|
82
|
+
req.body = body
|
77
83
|
end
|
78
84
|
end
|
79
85
|
|
@@ -83,10 +89,7 @@ module CrashLog
|
|
83
89
|
faraday.request :hmac_authentication, config.api_key, config.secret, {:service_id => config.service_name}
|
84
90
|
faraday.adapter(adapter)
|
85
91
|
faraday.request :url_encoded
|
86
|
-
# faraday.request :token_auth, config.api_key
|
87
92
|
# faraday.response :logger
|
88
|
-
# faraday.options[:timeout] = config.http_read_timeout
|
89
|
-
# faraday.options[:open_timeout] = config.http_open_timeout
|
90
93
|
# faraday.ssl[:verify] = false
|
91
94
|
end
|
92
95
|
end
|
data/lib/crash_log/version.rb
CHANGED
@@ -0,0 +1,20 @@
|
|
1
|
+
require "crash_log"
|
2
|
+
|
3
|
+
namespace :crashlog do
|
4
|
+
|
5
|
+
desc "Send a test exception to CrashLog."
|
6
|
+
task :test => :load do
|
7
|
+
begin
|
8
|
+
raise RuntimeError, "CrashLog test exception"
|
9
|
+
rescue => e
|
10
|
+
CrashLog.notify(e, {:context => {:action => "rake#crashlog:test"}})
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
task :load do
|
16
|
+
begin
|
17
|
+
Rake::Task["environment"].invoke
|
18
|
+
rescue
|
19
|
+
end
|
20
|
+
end
|
@@ -31,10 +31,10 @@ describe "Initializer" do
|
|
31
31
|
|
32
32
|
it "allows overriding of the logger if already assigned" do
|
33
33
|
pending
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
34
|
+
unless defined?(::Rails)
|
35
|
+
module Rails
|
36
|
+
end
|
37
|
+
end
|
38
38
|
|
39
39
|
Rails.stub(:logger).and_return(logger)
|
40
40
|
|
@@ -137,7 +137,7 @@ describe CrashLog::Payload do
|
|
137
137
|
|
138
138
|
describe 'data' do
|
139
139
|
it 'adds data to data interface' do
|
140
|
-
subject.add_data(something_awesome
|
140
|
+
subject.add_data(:something_awesome => 'Indeed')
|
141
141
|
subject.body.to_json.should have_json_path('data/something_awesome')
|
142
142
|
end
|
143
143
|
end
|
@@ -12,23 +12,6 @@ describe CrashLog::Reporter do
|
|
12
12
|
end
|
13
13
|
}
|
14
14
|
|
15
|
-
# let(:config) { stub("Configuration", {
|
16
|
-
# :host => "io.crashlog.io",
|
17
|
-
# :scheme => "https",
|
18
|
-
# :port => 443,
|
19
|
-
# :endpoint => '/notify',
|
20
|
-
# :announce => true,
|
21
|
-
# :announce_endpoint => '/announce',
|
22
|
-
# :dry_run => false,
|
23
|
-
# :api_key => 'API_TOKEN',
|
24
|
-
# :project_id => "PROJECT_ID",
|
25
|
-
# :http_read_timeout => 1,
|
26
|
-
# :http_open_timeout => 1
|
27
|
-
# }).tap do |config|
|
28
|
-
# config.stub(:adapter).and_return(:test, &test_adapter)
|
29
|
-
# end
|
30
|
-
# }
|
31
|
-
|
32
15
|
let(:test_adapter) {
|
33
16
|
lambda { |stub|
|
34
17
|
stub.post('/events') do |env|
|
@@ -84,7 +67,7 @@ describe CrashLog::Reporter do
|
|
84
67
|
end
|
85
68
|
|
86
69
|
it 'makes a post request' do
|
87
|
-
response = double("Post", success
|
70
|
+
response = double("Post", :success? => true)
|
88
71
|
response.stub(:body).and_return(positive_response_json)
|
89
72
|
subject.send(:connection).should_receive(:post).once.and_return(response)
|
90
73
|
subject.notify(payload)
|
@@ -130,8 +113,6 @@ describe CrashLog::Reporter do
|
|
130
113
|
subject.stub(:connection).and_return(test_connection)
|
131
114
|
end
|
132
115
|
|
133
|
-
it 'sends an identification payload to CrashLog'
|
134
|
-
|
135
116
|
it 'responds with an application name' do
|
136
117
|
subject.announce.should === 'CrashLog Test'
|
137
118
|
stubs.verify_stubbed_calls
|
@@ -142,46 +123,5 @@ describe CrashLog::Reporter do
|
|
142
123
|
it 'constructs url from configuration' do
|
143
124
|
subject.url.to_s.should == 'http://stdin.crashlog.io'
|
144
125
|
end
|
145
|
-
|
146
|
-
it 'sends HMACAuth header'
|
147
|
-
|
148
|
-
# # config.stub(:adapter).and_return(:test, &test_adapter)
|
149
|
-
|
150
|
-
# # .and_return(:test).and_yield do |stub|
|
151
|
-
# # stub.post('/notify') do |env|
|
152
|
-
# # [200, {}, env[:request_headers]]
|
153
|
-
# # end
|
154
|
-
# # end
|
155
|
-
|
156
|
-
# # test_connection = Faraday.new(:url => subject.url) do |faraday|
|
157
|
-
# # faraday.adapter :test do |stub|
|
158
|
-
# # stub.post('/notify') do |env|
|
159
|
-
# # [200, {}, env[:request_headers]]
|
160
|
-
# # end
|
161
|
-
# # end
|
162
|
-
# # end
|
163
|
-
|
164
|
-
# # #faraday.request :url_encoded
|
165
|
-
# # faraday.request :token_auth, "config.api_key"
|
166
|
-
# # #faraday.response :logger
|
167
|
-
# # # faraday.token_auth config.api_key
|
168
|
-
# # faraday.options[:timeout] = 1
|
169
|
-
# # faraday.options[:open_timeout] = 1
|
170
|
-
# # faraday.ssl[:verify] = false
|
171
|
-
# # end
|
172
|
-
|
173
|
-
# # subject.stub(:connection).and_return(test_connection)
|
174
|
-
# # subject.connection.adapter(:test) do |stub|
|
175
|
-
# # stub.post('/notify') do |env|
|
176
|
-
# # [200, {}, env[:request_headers]]
|
177
|
-
# # end
|
178
|
-
# # end
|
179
|
-
|
180
|
-
# subject.notify(payload).should be_true
|
181
|
-
|
182
|
-
# subject.response.should == 'Token token=""'
|
183
|
-
|
184
|
-
# stubs.verify_stubbed_calls
|
185
|
-
# end
|
186
126
|
end
|
187
127
|
end
|
@@ -59,54 +59,57 @@ describe 'Rescue from within a Rails 3.x controller' do
|
|
59
59
|
assert_caught_and_sent
|
60
60
|
end
|
61
61
|
|
62
|
-
it 'should intercept error and notify crashlog' do
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
62
|
+
# it 'should intercept error and notify crashlog' do
|
63
|
+
# begin
|
64
|
+
# get '/broken'
|
65
|
+
# rescue StandardError; end
|
66
|
+
|
67
|
+
# last_response.status.should == 500
|
68
|
+
# last_response.body.should match /We're sorry, but something went wrong/
|
69
|
+
|
70
|
+
# assert_caught_and_sent
|
71
|
+
# end
|
72
|
+
|
73
|
+
# it 'captures standard backtrace attributes' do
|
74
|
+
# action
|
75
|
+
|
76
|
+
# last_notice.to_json.should have_json_path('notifier/name')
|
77
|
+
# last_notice.to_json.should have_json_path('backtrace/0/number')
|
78
|
+
# last_notice.to_json.should have_json_path('backtrace/0/method')
|
79
|
+
# last_notice.to_json.should have_json_path('backtrace/0/file')
|
80
|
+
# last_notice.to_json.should have_json_path('backtrace/0/context_line')
|
81
|
+
# last_notice.to_json.should have_json_path('backtrace/0/pre_context/1')
|
82
|
+
# last_notice.to_json.should have_json_path('backtrace/0/pre_context/2')
|
83
|
+
# last_notice.to_json.should have_json_path('backtrace/0/pre_context/3')
|
84
|
+
# last_notice.to_json.should have_json_path('backtrace/0/pre_context/4')
|
85
|
+
# last_notice.to_json.should have_json_path('environment/system/hostname')
|
86
|
+
# last_notice.to_json.should have_json_path('environment/system/application_root')
|
87
|
+
# end
|
88
|
+
|
89
|
+
# it 'captures current user' do
|
90
|
+
# # ActionController::Base.any_instance.stub(:crash_log_context).and_return({current_user: {id: 1}})
|
91
|
+
|
92
|
+
# action
|
93
|
+
|
94
|
+
# # last_notice.should == ''
|
95
|
+
# last_notice.to_json.should have_json_path('context/current_user')
|
96
|
+
# end
|
97
|
+
|
98
|
+
# it 'should capture crash log custom data'
|
99
|
+
|
100
|
+
# it 'should raise error again after notifying' do
|
101
|
+
# ENV['RAILS_ENV']='production'
|
102
|
+
|
103
|
+
# logger = stub("Logger")
|
104
|
+
# ActionDispatch::DebugExceptions.any_instance.stub(:logger).and_return(logger)
|
105
|
+
# logger.should_receive(:fatal).once
|
106
|
+
|
107
|
+
# begin
|
108
|
+
# get '/broken'
|
109
|
+
# last_response.status.should == 500
|
110
|
+
# rescue
|
111
|
+
# end
|
112
|
+
# end
|
110
113
|
|
111
114
|
it 'should be able to defer reporting to another thread'
|
112
115
|
end
|
metadata
CHANGED
@@ -1,19 +1,19 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: crashlog
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.2
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
|
-
-
|
8
|
+
- Ivan Vanderbyl
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-10-
|
12
|
+
date: 2012-10-12 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: activesupport
|
16
|
-
requirement: &
|
16
|
+
requirement: &70256436029720 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,43 +21,43 @@ dependencies:
|
|
21
21
|
version: '0'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70256436029720
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: faraday
|
27
|
-
requirement: &
|
27
|
+
requirement: &70256436029220 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
|
-
- -
|
30
|
+
- - ~>
|
31
31
|
- !ruby/object:Gem::Version
|
32
|
-
version:
|
32
|
+
version: 0.8.4
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *70256436029220
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
|
-
name:
|
38
|
-
requirement: &
|
37
|
+
name: multi_json
|
38
|
+
requirement: &70256436028720 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ~>
|
42
42
|
- !ruby/object:Gem::Version
|
43
|
-
version: 1.
|
43
|
+
version: 1.3.6
|
44
44
|
type: :runtime
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *70256436028720
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
|
-
name:
|
49
|
-
requirement: &
|
48
|
+
name: crashlog-auth-hmac
|
49
|
+
requirement: &70256436028260 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
|
-
- -
|
52
|
+
- - ~>
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version:
|
54
|
+
version: 1.1.6
|
55
55
|
type: :runtime
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *70256436028260
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: rabl
|
60
|
-
requirement: &
|
60
|
+
requirement: &70256436027800 !ruby/object:Gem::Requirement
|
61
61
|
none: false
|
62
62
|
requirements:
|
63
63
|
- - ! '>='
|
@@ -65,10 +65,10 @@ dependencies:
|
|
65
65
|
version: 0.6.14
|
66
66
|
type: :runtime
|
67
67
|
prerelease: false
|
68
|
-
version_requirements: *
|
68
|
+
version_requirements: *70256436027800
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: uuid
|
71
|
-
requirement: &
|
71
|
+
requirement: &70256436027420 !ruby/object:Gem::Requirement
|
72
72
|
none: false
|
73
73
|
requirements:
|
74
74
|
- - ! '>='
|
@@ -76,10 +76,10 @@ dependencies:
|
|
76
76
|
version: '0'
|
77
77
|
type: :runtime
|
78
78
|
prerelease: false
|
79
|
-
version_requirements: *
|
79
|
+
version_requirements: *70256436027420
|
80
80
|
- !ruby/object:Gem::Dependency
|
81
81
|
name: hashr
|
82
|
-
requirement: &
|
82
|
+
requirement: &70256436043320 !ruby/object:Gem::Requirement
|
83
83
|
none: false
|
84
84
|
requirements:
|
85
85
|
- - ! '>='
|
@@ -87,7 +87,7 @@ dependencies:
|
|
87
87
|
version: '0'
|
88
88
|
type: :runtime
|
89
89
|
prerelease: false
|
90
|
-
version_requirements: *
|
90
|
+
version_requirements: *70256436043320
|
91
91
|
description: CrashLog Exception reporter
|
92
92
|
email:
|
93
93
|
- support@crashlog.io
|
@@ -111,7 +111,6 @@ files:
|
|
111
111
|
- lib/crash_log/backtrace.rb
|
112
112
|
- lib/crash_log/backtrace/line.rb
|
113
113
|
- lib/crash_log/backtrace/line_cache.rb
|
114
|
-
- lib/crash_log/configuration.bak.rb
|
115
114
|
- lib/crash_log/configuration.rb
|
116
115
|
- lib/crash_log/logging.rb
|
117
116
|
- lib/crash_log/payload.rb
|
@@ -128,6 +127,7 @@ files:
|
|
128
127
|
- lib/crashlog.rb
|
129
128
|
- lib/faraday/request/hmac_authentication.rb
|
130
129
|
- lib/rails/generators/crashlog/crashlog_generator.rb
|
130
|
+
- lib/tasks/crash_log.rake
|
131
131
|
- rails/init.rb
|
132
132
|
- script/integration_test
|
133
133
|
- spec/crash_log/backtrace_spec.rb
|
@@ -200,7 +200,7 @@ rubyforge_project:
|
|
200
200
|
rubygems_version: 1.8.15
|
201
201
|
signing_key:
|
202
202
|
specification_version: 3
|
203
|
-
summary: CrashLog is an exception handler for
|
203
|
+
summary: CrashLog is an exception handler for ambitious applications
|
204
204
|
test_files:
|
205
205
|
- spec/crash_log/backtrace_spec.rb
|
206
206
|
- spec/crash_log/configuration_spec.rb
|
@@ -1,199 +0,0 @@
|
|
1
|
-
module CrashLog
|
2
|
-
class Configuration
|
3
|
-
|
4
|
-
DEFAULT_PARAMS_FILTERS = %w(password password_confirmation).freeze
|
5
|
-
|
6
|
-
DEFAULT_BACKTRACE_FILTERS = [
|
7
|
-
lambda { |line|
|
8
|
-
if defined?(CrashLog.configuration.project_root) &&
|
9
|
-
CrashLog.configuration.project_root.to_s != ''
|
10
|
-
line.sub(/#{CrashLog.configuration.project_root}/, "[PROJECT_ROOT]")
|
11
|
-
else
|
12
|
-
line
|
13
|
-
end
|
14
|
-
},
|
15
|
-
lambda { |line| line.gsub(/^\.\//, "") },
|
16
|
-
lambda { |line|
|
17
|
-
if defined?(Gem)
|
18
|
-
Gem.path.inject(line) do |line, path|
|
19
|
-
line.gsub(/#{path}/, "[GEM_ROOT]")
|
20
|
-
end
|
21
|
-
end
|
22
|
-
},
|
23
|
-
lambda { |line| line if line !~ %r{lib/crash_log} }
|
24
|
-
].freeze
|
25
|
-
|
26
|
-
ENVIRONMENT_FILTERS = []
|
27
|
-
|
28
|
-
IGNORE_DEFAULT = ['ActiveRecord::RecordNotFound',
|
29
|
-
'ActionController::RoutingError',
|
30
|
-
'ActionController::InvalidAuthenticityToken',
|
31
|
-
'CGI::Session::CookieStore::TamperedWithCookie',
|
32
|
-
'ActionController::UnknownAction',
|
33
|
-
'AbstractController::ActionNotFound',
|
34
|
-
'Mongoid::Errors::DocumentNotFound']
|
35
|
-
|
36
|
-
# The default logging device
|
37
|
-
#
|
38
|
-
# This will be set to Rails.logger automatically if using Rails,
|
39
|
-
# otherwise it defaults to STDOUT.
|
40
|
-
attr_accessor :logger
|
41
|
-
|
42
|
-
# The API key to authenticate this project with CrashLog
|
43
|
-
#
|
44
|
-
# Get this from your projects configuration page within http://CrashLog.io
|
45
|
-
attr_accessor :api_key
|
46
|
-
|
47
|
-
# Stages (environments) which we consider to be in a production environment
|
48
|
-
# and thus you want to be sent notifications for.
|
49
|
-
attr_accessor :release_stages
|
50
|
-
|
51
|
-
# The name of the current stage
|
52
|
-
attr_reader :stage
|
53
|
-
|
54
|
-
# Project Root directory
|
55
|
-
attr_accessor :project_root
|
56
|
-
alias :root :project_root
|
57
|
-
alias :root= :project_root=
|
58
|
-
|
59
|
-
# If set, this will serialize the object returned by sending this key to
|
60
|
-
# the controller context. You can use this to send user data CrashLog to
|
61
|
-
# correlate errors with users to give you more advanced data about directly
|
62
|
-
# who was affected.
|
63
|
-
#
|
64
|
-
# All user data is stored encrypted for security and always remains your
|
65
|
-
# property.
|
66
|
-
attr_accessor :user_context_key
|
67
|
-
|
68
|
-
# Reporter configuration options
|
69
|
-
#
|
70
|
-
# Host to send exceptions to. Default: crashlog.io
|
71
|
-
attr_accessor :host
|
72
|
-
|
73
|
-
# Port to use for http connections. 80 or 443 by default.
|
74
|
-
attr_writer :port
|
75
|
-
|
76
|
-
def port
|
77
|
-
if @port
|
78
|
-
@port
|
79
|
-
else
|
80
|
-
secure? ? 443 : 80
|
81
|
-
end
|
82
|
-
end
|
83
|
-
|
84
|
-
# HTTP transfer scheme, default: https
|
85
|
-
attr_accessor :scheme
|
86
|
-
|
87
|
-
# API endpoint to context for notifications. Default /notify
|
88
|
-
attr_accessor :endpoint
|
89
|
-
|
90
|
-
# The faraday adapter to use to make the connection.
|
91
|
-
#
|
92
|
-
# Possible values are:
|
93
|
-
# - :test
|
94
|
-
# - :net_http
|
95
|
-
# - :net_http_persistent
|
96
|
-
# - :typhoeus
|
97
|
-
# - :patron
|
98
|
-
# - :em_synchrony
|
99
|
-
# - :em_http
|
100
|
-
# - :excon
|
101
|
-
# - :rack
|
102
|
-
# - :httpclient
|
103
|
-
#
|
104
|
-
# Possible performance gains can be made by using the em based adapters if
|
105
|
-
# your application supports this architecture.
|
106
|
-
#
|
107
|
-
# Default: net_http
|
108
|
-
attr_accessor :adapter
|
109
|
-
|
110
|
-
# Reader for Array of ignored error class names
|
111
|
-
attr_reader :ignore
|
112
|
-
|
113
|
-
attr_reader :announce_endpoint, :announce
|
114
|
-
|
115
|
-
# Send context lines for backtrace.
|
116
|
-
#
|
117
|
-
# Takes an integer of the number of lines, set to false or nil to disable.
|
118
|
-
attr_accessor :context_lines
|
119
|
-
|
120
|
-
# Environment variables to discard from ENV.
|
121
|
-
attr_accessor :environment_filters
|
122
|
-
|
123
|
-
# Framework name
|
124
|
-
attr_accessor :framework
|
125
|
-
|
126
|
-
attr_accessor :dry_run
|
127
|
-
|
128
|
-
attr_accessor :http_read_timeout, :http_open_timeout
|
129
|
-
|
130
|
-
def initialize
|
131
|
-
@dry_run = false
|
132
|
-
@secure = true
|
133
|
-
@use_system_ssl_cert_chain= false
|
134
|
-
@host = 'crashlog.io'
|
135
|
-
@http_open_timeout = 5
|
136
|
-
@http_read_timeout = 2
|
137
|
-
@adapter = :net_http
|
138
|
-
@params_filters = DEFAULT_PARAMS_FILTERS.dup
|
139
|
-
@backtrace_filters = DEFAULT_BACKTRACE_FILTERS.dup
|
140
|
-
@environment_filters = ENVIRONMENT_FILTERS.dup
|
141
|
-
@ignore_by_filters = []
|
142
|
-
@ignore = IGNORE_DEFAULT.dup
|
143
|
-
@release_stages = %w(production staging)
|
144
|
-
@notifier_version = CrashLog::VERSION
|
145
|
-
@notifier_url = 'https://github.com/ivanvanderbyl/crashlog'
|
146
|
-
@framework = 'Standalone'
|
147
|
-
@stage = 'development'
|
148
|
-
@host = 'stdin.crashlog.io'
|
149
|
-
@port = nil
|
150
|
-
@scheme = port.eql?(443) ? 'https' : 'http'
|
151
|
-
@endpoint = '/notify'
|
152
|
-
@announce = true
|
153
|
-
@announce_endpoint = '/announce'
|
154
|
-
@context_lines = 5
|
155
|
-
@framework = 'Standalone'
|
156
|
-
end
|
157
|
-
|
158
|
-
def release_stage?
|
159
|
-
@release_stages.include?(stage)
|
160
|
-
end
|
161
|
-
|
162
|
-
def stage=(name)
|
163
|
-
@stage = name.downcase.strip
|
164
|
-
end
|
165
|
-
|
166
|
-
# Is this configuration valid for sending exceptions to CrashLog
|
167
|
-
#
|
168
|
-
# Returns true if all required keys are provided, otherwise false
|
169
|
-
def valid?
|
170
|
-
[:api_key, :host, :port].all? do |key|
|
171
|
-
!__send__(key).nil?
|
172
|
-
end
|
173
|
-
end
|
174
|
-
|
175
|
-
def ignored?(exception)
|
176
|
-
ignore.include?(error_class(exception))
|
177
|
-
end
|
178
|
-
|
179
|
-
def secure?
|
180
|
-
scheme == 'https'
|
181
|
-
end
|
182
|
-
|
183
|
-
# Hash like accessor
|
184
|
-
def [](key)
|
185
|
-
if self.respond_to?(key)
|
186
|
-
self.__send__(key)
|
187
|
-
end
|
188
|
-
end
|
189
|
-
|
190
|
-
private
|
191
|
-
|
192
|
-
def error_class(exception)
|
193
|
-
# The "Class" check is for some strange exceptions like Timeout::Error
|
194
|
-
# which throw the error class instead of an instance
|
195
|
-
(exception.is_a? Class) ? exception.name : exception.class.name
|
196
|
-
end
|
197
|
-
|
198
|
-
end
|
199
|
-
end
|