crashlog 1.0.0 → 1.0.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.
- data/Gemfile.lock +1 -1
- data/lib/crash_log/payload.rb +11 -15
- data/lib/crash_log/rails/action_controller_rescue.rb +1 -1
- data/lib/crash_log/rails/controller_methods.rb +21 -7
- data/lib/crash_log/rails/middleware/debug_exception_catcher.rb +14 -13
- data/lib/crash_log/system_information.rb +4 -0
- data/lib/crash_log/templates/payload.rabl +1 -0
- data/lib/crash_log/version.rb +1 -1
- data/lib/crash_log.rb +11 -7
- data/script/integration_test +2 -2
- data/spec/crash_log/payload_spec.rb +55 -34
- data/spec/dummy/app/controllers/break_controller.rb +9 -0
- data/spec/dummy/app/models/current_user.rb +9 -0
- data/spec/dummy/config/routes.rb +1 -0
- data/spec/requests/rails_controller_rescue_spec.rb +70 -9
- data/spec/spec_helper.rb +9 -0
- data/spec/support/define_constants.rb +16 -0
- metadata +20 -16
data/Gemfile.lock
CHANGED
data/lib/crash_log/payload.rb
CHANGED
@@ -20,28 +20,33 @@ module CrashLog
|
|
20
20
|
log_exception(e)
|
21
21
|
end
|
22
22
|
|
23
|
-
attr_reader :config, :backtrace_filters
|
23
|
+
attr_reader :config, :backtrace_filters, :data
|
24
24
|
|
25
25
|
def initialize(event_data, config)
|
26
26
|
@config = config || {}
|
27
27
|
@event_data = event_data
|
28
28
|
@context = {}
|
29
29
|
@environment = {}
|
30
|
+
@data = {}
|
30
31
|
@backtrace_filters = config[:backtrace_filters] || []
|
31
32
|
|
32
33
|
# Actually serialize the exception/event hash for transport
|
33
34
|
@event = serialize_event(event_data)
|
34
35
|
|
35
|
-
|
36
|
+
add_environment_data(:system => SystemInformation.to_hash)
|
37
|
+
add_context(:stage => config.stage)
|
36
38
|
end
|
37
39
|
|
38
40
|
def deliver
|
39
|
-
reporter = Reporter.new(config)
|
40
41
|
if reporter.notify(self.body)
|
41
42
|
reporter.result
|
42
43
|
end
|
43
44
|
end
|
44
45
|
|
46
|
+
def reporter
|
47
|
+
CrashLog.reporter
|
48
|
+
end
|
49
|
+
|
45
50
|
attr_reader :event, :backtrace, :exception_object, :environment, :context
|
46
51
|
|
47
52
|
def body
|
@@ -52,16 +57,12 @@ module CrashLog
|
|
52
57
|
(@context ||= {}).merge!(data) if data.is_a?(Hash)
|
53
58
|
end
|
54
59
|
|
55
|
-
def
|
56
|
-
if data.
|
57
|
-
@user_data.merge!(data)
|
58
|
-
elsif value && data.respond_to?(:to_sym)
|
59
|
-
@user_data[data.to_sym] = value
|
60
|
-
end
|
60
|
+
def add_data(data)
|
61
|
+
(@data ||= {}).merge!(data) if data.is_a?(Hash)
|
61
62
|
end
|
62
63
|
|
63
64
|
def add_session_data(data)
|
64
|
-
(@
|
65
|
+
(@data[:session] ||= {}).merge!(data) if data.is_a?(Hash)
|
65
66
|
end
|
66
67
|
|
67
68
|
def add_environment_data(data)
|
@@ -87,11 +88,6 @@ module CrashLog
|
|
87
88
|
}
|
88
89
|
end
|
89
90
|
|
90
|
-
# Returns the hostname of this machine
|
91
|
-
def hostname
|
92
|
-
SystemInformation.hostname
|
93
|
-
end
|
94
|
-
|
95
91
|
private
|
96
92
|
|
97
93
|
def serialize_event(event_data)
|
@@ -3,25 +3,27 @@ module CrashLog
|
|
3
3
|
module ControllerMethods
|
4
4
|
|
5
5
|
def crash_log_context
|
6
|
-
{
|
6
|
+
{
|
7
|
+
:context => {
|
8
|
+
:controller => params[:controller],
|
9
|
+
:action => params[:action],
|
10
|
+
:current_user => crash_log_current_user
|
11
|
+
},
|
12
|
+
:parameters => crash_log_filter_if_filtering(params.to_hash),
|
7
13
|
:session_data => crash_log_filter_if_filtering(crash_log_session_data),
|
8
|
-
:controller => params[:controller],
|
9
|
-
:action => params[:action],
|
10
14
|
:url => crash_log_request_url,
|
11
15
|
:cgi_data => crash_log_filter_if_filtering(request.env),
|
12
|
-
:current_user => crash_log_current_user
|
13
16
|
}
|
14
17
|
end
|
15
18
|
|
16
19
|
private
|
20
|
+
|
17
21
|
def notify_crashlog(exception, custom_data = nil)
|
18
22
|
request_data = crash_log_context
|
19
|
-
|
23
|
+
request_data[:custom] = custom_data if custom_data
|
20
24
|
CrashLog.notify(exception, request_data)
|
21
25
|
end
|
22
26
|
|
23
|
-
alias_method :notify_airbrake, :notify_crashlog
|
24
|
-
|
25
27
|
def crash_log_session_data
|
26
28
|
if session.respond_to?(:to_hash)
|
27
29
|
session.to_hash
|
@@ -41,6 +43,18 @@ module CrashLog
|
|
41
43
|
url
|
42
44
|
end
|
43
45
|
|
46
|
+
def crash_log_filter_if_filtering(hash)
|
47
|
+
return hash if ! hash.is_a?(Hash)
|
48
|
+
|
49
|
+
if respond_to?(:filter_parameters) # Rails 2
|
50
|
+
filter_parameters(hash)
|
51
|
+
elsif defined?(ActionDispatch::Http::ParameterFilter) # Rails 3
|
52
|
+
ActionDispatch::Http::ParameterFilter.new(::Rails.application.config.filter_parameters).filter(hash)
|
53
|
+
else
|
54
|
+
hash
|
55
|
+
end rescue hash
|
56
|
+
end
|
57
|
+
|
44
58
|
def crash_log_current_user
|
45
59
|
user = begin current_user rescue current_member end
|
46
60
|
user.attributes.select do |k, v|
|
@@ -10,31 +10,32 @@ module CrashLog
|
|
10
10
|
# Hook into the rails error rendering page to send this exception to
|
11
11
|
# CrashLog before rails handlers take over.
|
12
12
|
def render_exception_with_crash_log(env, exception)
|
13
|
-
|
13
|
+
begin
|
14
|
+
controller = env['action_controller.instance']
|
15
|
+
CrashLog.notify_or_ignore(exception, crash_log_context(controller, env))
|
14
16
|
|
15
|
-
|
16
|
-
|
17
|
+
if defined?(controller.rescue_action_in_public_without_crash_log)
|
18
|
+
controller.rescue_action_in_public_without_crash_log(exception)
|
19
|
+
end
|
17
20
|
|
18
|
-
|
19
|
-
|
21
|
+
rescue Exception => e
|
22
|
+
# If it breaks here there is possibly something wrong with us, so
|
23
|
+
# instead of crashing again, we'll just pass it on.
|
20
24
|
end
|
21
|
-
|
22
|
-
rescue Exception => e
|
23
|
-
# If it breaks here there is possibly something wrong with us, so
|
24
|
-
# instead of crashing again, we'll just pass it on.
|
25
|
-
ensure
|
26
25
|
render_exception_without_crash_log(env, exception)
|
27
26
|
end
|
28
27
|
|
29
28
|
private
|
30
29
|
|
31
30
|
def crash_log_context(controller, env)
|
32
|
-
|
33
|
-
|
34
|
-
controller.crash_log_request_data
|
31
|
+
if controller.respond_to?(:crash_log_context)
|
32
|
+
controller.crash_log_context
|
35
33
|
else
|
36
34
|
{:rack_env => env}
|
37
35
|
end
|
36
|
+
|
37
|
+
rescue => e
|
38
|
+
{:failed_context => true}
|
38
39
|
end
|
39
40
|
|
40
41
|
end
|
@@ -28,6 +28,8 @@ module CrashLog
|
|
28
28
|
|
29
29
|
def username
|
30
30
|
ENV['LOGNAME'] || ENV['USER'] || ENV['USERNAME'] || ENV['APACHE_RUN_USER'] || 'UNKNOWN'
|
31
|
+
rescue
|
32
|
+
nil
|
31
33
|
end
|
32
34
|
|
33
35
|
def environment
|
@@ -38,6 +40,8 @@ module CrashLog
|
|
38
40
|
else
|
39
41
|
{}
|
40
42
|
end
|
43
|
+
rescue
|
44
|
+
{}
|
41
45
|
end
|
42
46
|
|
43
47
|
def libraries_loaded
|
data/lib/crash_log/version.rb
CHANGED
data/lib/crash_log.rb
CHANGED
@@ -26,6 +26,7 @@ module CrashLog
|
|
26
26
|
LOG_PREFIX = '** [CrashLog]'
|
27
27
|
|
28
28
|
class << self
|
29
|
+
attr_accessor :reporter
|
29
30
|
|
30
31
|
# Sends a notification to CrashLog
|
31
32
|
#
|
@@ -48,12 +49,9 @@ module CrashLog
|
|
48
49
|
# CrashLog.notify(e, {current_user: current_user})
|
49
50
|
# end
|
50
51
|
#
|
51
|
-
# This will try to serialize the current user by calling `as_crashlog_context` or `as_json`
|
52
|
-
# otherwise it will try `to_s`
|
53
|
-
#
|
54
52
|
# Returns true if successful, otherwise false
|
55
|
-
def notify(exception,
|
56
|
-
send_notification(exception,
|
53
|
+
def notify(exception, data = {})
|
54
|
+
send_notification(exception, data).tap do |notification|
|
57
55
|
if notification
|
58
56
|
info "Event sent to CrashLog.io"
|
59
57
|
info "Event URL: http://crashlog.io/locate/#{notification[:location_id]}" if notification.has_key?(:location_id)
|
@@ -86,6 +84,8 @@ module CrashLog
|
|
86
84
|
if block_given?
|
87
85
|
yield(configuration)
|
88
86
|
|
87
|
+
self.reporter = CrashLog::Reporter.new(configuration)
|
88
|
+
|
89
89
|
if configuration.valid?
|
90
90
|
if announce.eql?(true)
|
91
91
|
report_for_duty!
|
@@ -96,6 +96,7 @@ module CrashLog
|
|
96
96
|
error("Not configured correctly. Missing the following keys: #{configuration.invalid_keys.join(', ')}")
|
97
97
|
end
|
98
98
|
end
|
99
|
+
configuration
|
99
100
|
end
|
100
101
|
|
101
102
|
# The global configuration object.
|
@@ -131,9 +132,12 @@ module CrashLog
|
|
131
132
|
end
|
132
133
|
end
|
133
134
|
|
134
|
-
def build_payload(exception,
|
135
|
+
def build_payload(exception, data = {})
|
135
136
|
Payload.build(exception, configuration) do |payload|
|
136
|
-
|
137
|
+
if context = data.delete(:context)
|
138
|
+
payload.add_context(context)
|
139
|
+
end
|
140
|
+
payload.add_data(data)
|
137
141
|
end
|
138
142
|
end
|
139
143
|
end
|
data/script/integration_test
CHANGED
@@ -34,13 +34,13 @@ class SimulatedExceptionRaiser
|
|
34
34
|
end
|
35
35
|
end
|
36
36
|
|
37
|
-
CrashLog.configure do |config|
|
37
|
+
CrashLog.configure(true) do |config|
|
38
38
|
config.api_key = ARGV[0]
|
39
39
|
config.secret = ARGV[1]
|
40
40
|
config.scheme = secure ? 'https' : 'http'
|
41
41
|
config.host = URI.parse(host).host
|
42
42
|
config.port = URI.parse(host).port
|
43
|
-
config.service_name = 'Staging'
|
43
|
+
# config.service_name = 'Staging'
|
44
44
|
end
|
45
45
|
|
46
46
|
puts "Configuration:"
|
@@ -5,8 +5,9 @@ describe CrashLog::Payload do
|
|
5
5
|
include JsonSpec
|
6
6
|
|
7
7
|
let(:configuration) do
|
8
|
-
|
9
|
-
config.
|
8
|
+
CrashLog.configure do |config|
|
9
|
+
config.api_key = 'API_KEY'
|
10
|
+
config.secret = 'SECRET'
|
10
11
|
end
|
11
12
|
end
|
12
13
|
|
@@ -21,12 +22,13 @@ describe CrashLog::Payload do
|
|
21
22
|
end
|
22
23
|
|
23
24
|
describe '#add_context' do
|
24
|
-
it '
|
25
|
-
|
25
|
+
it 'has stage set from payload' do
|
26
|
+
data = {:stage=>"production"}
|
27
|
+
subject.context.should == data
|
26
28
|
end
|
27
29
|
|
28
30
|
it 'merges in new user data' do
|
29
|
-
data = {:email
|
31
|
+
data = {:stage=>"production", :email=>"user@example.com"}
|
30
32
|
subject.add_context(data)
|
31
33
|
subject.context.should == data
|
32
34
|
end
|
@@ -34,13 +36,13 @@ describe CrashLog::Payload do
|
|
34
36
|
|
35
37
|
describe '#add_session_data' do
|
36
38
|
it 'is empty by default' do
|
37
|
-
subject.
|
39
|
+
subject.data[:session].should be_nil
|
38
40
|
end
|
39
41
|
|
40
42
|
it 'allows merging in data' do
|
41
43
|
data = {:path => '/problematic/path'}
|
42
44
|
subject.add_session_data(data)
|
43
|
-
subject.
|
45
|
+
subject.data[:session].should == data
|
44
46
|
end
|
45
47
|
|
46
48
|
it 'allows adding more data' do
|
@@ -49,8 +51,8 @@ describe CrashLog::Payload do
|
|
49
51
|
subject.add_session_data(data_1)
|
50
52
|
subject.add_session_data(data_2)
|
51
53
|
|
52
|
-
subject.
|
53
|
-
subject.
|
54
|
+
subject.data[:session][:path].should == data_1[:path]
|
55
|
+
subject.data[:session][:count].should == data_2[:count]
|
54
56
|
end
|
55
57
|
end
|
56
58
|
|
@@ -72,9 +74,9 @@ describe CrashLog::Payload do
|
|
72
74
|
end
|
73
75
|
end
|
74
76
|
|
75
|
-
describe '
|
77
|
+
describe 'event' do
|
76
78
|
|
77
|
-
it 'has
|
79
|
+
it 'has type' do
|
78
80
|
subject.body.to_json.should have_json_path('event/type')
|
79
81
|
end
|
80
82
|
|
@@ -82,42 +84,61 @@ describe CrashLog::Payload do
|
|
82
84
|
subject.body.to_json.should have_json_path('event/message')
|
83
85
|
end
|
84
86
|
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
87
|
+
it 'has timestamp' do
|
88
|
+
subject.body.to_json.should have_json_path('event/timestamp')
|
89
|
+
end
|
90
|
+
end
|
89
91
|
|
90
|
-
|
91
|
-
|
92
|
-
|
92
|
+
it 'has backtrace' do
|
93
|
+
subject.body.to_json.should have_json_path('backtrace/0')
|
94
|
+
end
|
93
95
|
|
94
|
-
|
95
|
-
|
96
|
-
|
96
|
+
describe 'environment' do
|
97
|
+
it 'should have system information' do
|
98
|
+
subject.body.to_json.should have_json_path('environment/system/hostname')
|
99
|
+
end
|
97
100
|
|
98
|
-
|
99
|
-
|
100
|
-
end
|
101
|
+
it 'has system ruby version' do
|
102
|
+
subject.body.to_json.should have_json_path('environment/system/ruby_version')
|
101
103
|
end
|
102
104
|
|
103
|
-
it 'has
|
104
|
-
subject.body.to_json.should have_json_path('
|
105
|
+
it 'has system username' do
|
106
|
+
subject.body.to_json.should have_json_path('environment/system/username')
|
105
107
|
end
|
106
108
|
|
107
|
-
it 'has
|
108
|
-
subject.body.to_json.should have_json_path('
|
109
|
+
it 'has system environment' do
|
110
|
+
subject.body.to_json.should have_json_path('environment/system/environment')
|
109
111
|
end
|
110
112
|
end
|
111
113
|
|
112
|
-
describe '
|
114
|
+
describe 'backtrace' do
|
115
|
+
it 'has line number' do
|
116
|
+
subject.body.to_json.should have_json_path('backtrace/0/number')
|
117
|
+
end
|
118
|
+
|
119
|
+
it 'has integer as line number' do
|
120
|
+
subject.body.to_json.should have_json_type(Integer).at_path('backtrace/0/number')
|
121
|
+
end
|
122
|
+
|
123
|
+
it 'has filename' do
|
124
|
+
subject.body.to_json.should have_json_path('backtrace/0/file')
|
125
|
+
end
|
113
126
|
|
127
|
+
it 'has method' do
|
128
|
+
subject.body.to_json.should have_json_path('backtrace/0/method')
|
129
|
+
end
|
130
|
+
end
|
131
|
+
|
132
|
+
describe 'context' do
|
133
|
+
it 'has stage' do
|
134
|
+
subject.body.to_json.should have_json_path('context/stage')
|
135
|
+
end
|
114
136
|
end
|
115
137
|
|
116
|
-
describe '
|
117
|
-
it '
|
118
|
-
|
119
|
-
|
120
|
-
# subject.body.to_json.should have_json_path('user_data/email')
|
138
|
+
describe 'data' do
|
139
|
+
it 'adds data to data interface' do
|
140
|
+
subject.add_data(something_awesome: 'Indeed')
|
141
|
+
subject.body.to_json.should have_json_path('data/something_awesome')
|
121
142
|
end
|
122
143
|
end
|
123
144
|
end
|
@@ -7,4 +7,13 @@ class BreakController < ApplicationController
|
|
7
7
|
raise RuntimeError, "You hit the broken route"
|
8
8
|
end
|
9
9
|
|
10
|
+
def manual_notify
|
11
|
+
raise RuntimeError, "Manual exception"
|
12
|
+
rescue => e
|
13
|
+
notify_crashlog(e)
|
14
|
+
end
|
15
|
+
|
16
|
+
def current_user
|
17
|
+
CurrentUser.new
|
18
|
+
end
|
10
19
|
end
|
data/spec/dummy/config/routes.rb
CHANGED
@@ -1,10 +1,45 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
require 'rack/test'
|
3
|
+
require 'uuid'
|
3
4
|
|
4
5
|
describe 'Rescue from within a Rails 3.x controller' do
|
5
6
|
include RSpec::Rails::RequestExampleGroup
|
6
7
|
include Rack::Test::Methods
|
7
8
|
|
9
|
+
class CollectingReporter
|
10
|
+
attr_reader :collected
|
11
|
+
|
12
|
+
def initialize
|
13
|
+
@collected = []
|
14
|
+
end
|
15
|
+
|
16
|
+
def result
|
17
|
+
{:location_id => UUID.generate }
|
18
|
+
end
|
19
|
+
|
20
|
+
def notify(payload)
|
21
|
+
@collected << payload
|
22
|
+
true
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
def assert_caught_and_sent
|
27
|
+
CrashLog.reporter.collected.should_not be_empty
|
28
|
+
end
|
29
|
+
|
30
|
+
def assert_caught_and_not_sent
|
31
|
+
expect { CrashLog.reporter.collected.empty? }.to be_true
|
32
|
+
end
|
33
|
+
|
34
|
+
def last_notice
|
35
|
+
CrashLog.reporter.collected.last
|
36
|
+
end
|
37
|
+
|
38
|
+
before do
|
39
|
+
CrashLog.reporter = CollectingReporter.new
|
40
|
+
CrashLog.configuration.root = File.expand_path("../..", __FILE__)
|
41
|
+
end
|
42
|
+
|
8
43
|
it 'is testing tails 3.x' do
|
9
44
|
Rails.version.should =~ /^3\.2\./
|
10
45
|
end
|
@@ -17,20 +52,46 @@ describe 'Rescue from within a Rails 3.x controller' do
|
|
17
52
|
end
|
18
53
|
end
|
19
54
|
|
55
|
+
let(:action) { get '/broken' }
|
56
|
+
|
57
|
+
it 'collects payloads' do
|
58
|
+
CrashLog.notify(RuntimeError.new("TEST"))
|
59
|
+
assert_caught_and_sent
|
60
|
+
end
|
61
|
+
|
20
62
|
it 'should intercept error and notify crashlog' do
|
21
|
-
|
63
|
+
get '/broken'
|
64
|
+
last_response.status.should == 500
|
65
|
+
last_response.body.should match /We're sorry, but something went wrong/
|
22
66
|
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
67
|
+
assert_caught_and_sent
|
68
|
+
end
|
69
|
+
|
70
|
+
it 'captures standard backtrace attributes' do
|
71
|
+
action
|
72
|
+
|
73
|
+
last_notice.to_json.should have_json_path('notifier/name')
|
74
|
+
last_notice.to_json.should have_json_path('backtrace/0/number')
|
75
|
+
last_notice.to_json.should have_json_path('backtrace/0/method')
|
76
|
+
last_notice.to_json.should have_json_path('backtrace/0/file')
|
77
|
+
last_notice.to_json.should have_json_path('backtrace/0/context_line')
|
78
|
+
last_notice.to_json.should have_json_path('backtrace/0/pre_context/1')
|
79
|
+
last_notice.to_json.should have_json_path('backtrace/0/pre_context/2')
|
80
|
+
last_notice.to_json.should have_json_path('backtrace/0/pre_context/3')
|
81
|
+
last_notice.to_json.should have_json_path('backtrace/0/pre_context/4')
|
82
|
+
last_notice.to_json.should have_json_path('environment/system/hostname')
|
83
|
+
last_notice.to_json.should have_json_path('environment/system/application_root')
|
84
|
+
end
|
85
|
+
|
86
|
+
it 'captures current user' do
|
87
|
+
# ActionController::Base.any_instance.stub(:crash_log_context).and_return({current_user: {id: 1}})
|
88
|
+
|
89
|
+
action
|
30
90
|
|
91
|
+
# last_notice.should == ''
|
92
|
+
last_notice.to_json.should have_json_path('context/current_user')
|
31
93
|
end
|
32
94
|
|
33
|
-
it 'should capture current user'
|
34
95
|
it 'should capture crash log custom data'
|
35
96
|
|
36
97
|
it 'should raise error again after notifying' do
|
data/spec/spec_helper.rb
CHANGED
@@ -18,4 +18,13 @@ Dir[File.expand_path("../support/*.rb", __FILE__)].each { |file| require file }
|
|
18
18
|
RSpec.configure do |config|
|
19
19
|
config.mock_with :rspec
|
20
20
|
config.include Delorean
|
21
|
+
config.include DefinesConstants
|
22
|
+
|
23
|
+
config.before(:each) do
|
24
|
+
setup_constants
|
25
|
+
end
|
26
|
+
|
27
|
+
config.after(:each) do
|
28
|
+
teardown_constants
|
29
|
+
end
|
21
30
|
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
module DefinesConstants
|
2
|
+
def setup_constants
|
3
|
+
@defined_constants = []
|
4
|
+
end
|
5
|
+
|
6
|
+
def teardown_constants
|
7
|
+
@defined_constants.each do |constant|
|
8
|
+
Object.__send__(:remove_const, constant)
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
def define_constant(name, value)
|
13
|
+
Object.const_set(name, value)
|
14
|
+
@defined_constants << name
|
15
|
+
end
|
16
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
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.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-10-
|
12
|
+
date: 2012-10-11 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: activesupport
|
16
|
-
requirement: &
|
16
|
+
requirement: &70168301743680 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: '0'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70168301743680
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: faraday
|
27
|
-
requirement: &
|
27
|
+
requirement: &70168301743260 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: '0'
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *70168301743260
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: crashlog-auth-hmac
|
38
|
-
requirement: &
|
38
|
+
requirement: &70168301742760 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ~>
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: 1.1.6
|
44
44
|
type: :runtime
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *70168301742760
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: yajl-ruby
|
49
|
-
requirement: &
|
49
|
+
requirement: &70168301742340 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ! '>='
|
@@ -54,10 +54,10 @@ dependencies:
|
|
54
54
|
version: '0'
|
55
55
|
type: :runtime
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *70168301742340
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: rabl
|
60
|
-
requirement: &
|
60
|
+
requirement: &70168301741800 !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: *70168301741800
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: uuid
|
71
|
-
requirement: &
|
71
|
+
requirement: &70168301741380 !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: *70168301741380
|
80
80
|
- !ruby/object:Gem::Dependency
|
81
81
|
name: hashr
|
82
|
-
requirement: &
|
82
|
+
requirement: &70168301740920 !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: *70168301740920
|
91
91
|
description: CrashLog Exception reporter
|
92
92
|
email:
|
93
93
|
- support@crashlog.io
|
@@ -145,6 +145,7 @@ files:
|
|
145
145
|
- spec/dummy/app/helpers/application_helper.rb
|
146
146
|
- spec/dummy/app/mailers/.gitkeep
|
147
147
|
- spec/dummy/app/models/.gitkeep
|
148
|
+
- spec/dummy/app/models/current_user.rb
|
148
149
|
- spec/dummy/app/views/layouts/application.html.erb
|
149
150
|
- spec/dummy/config.ru
|
150
151
|
- spec/dummy/config/application.rb
|
@@ -172,6 +173,7 @@ files:
|
|
172
173
|
- spec/requests/rack_spec.rb
|
173
174
|
- spec/requests/rails_controller_rescue_spec.rb
|
174
175
|
- spec/spec_helper.rb
|
176
|
+
- spec/support/define_constants.rb
|
175
177
|
- spec/support/doing.rb
|
176
178
|
- spec/support/dummy_app.rb
|
177
179
|
- spec/support/hash_ext.rb
|
@@ -215,6 +217,7 @@ test_files:
|
|
215
217
|
- spec/dummy/app/helpers/application_helper.rb
|
216
218
|
- spec/dummy/app/mailers/.gitkeep
|
217
219
|
- spec/dummy/app/models/.gitkeep
|
220
|
+
- spec/dummy/app/models/current_user.rb
|
218
221
|
- spec/dummy/app/views/layouts/application.html.erb
|
219
222
|
- spec/dummy/config.ru
|
220
223
|
- spec/dummy/config/application.rb
|
@@ -242,6 +245,7 @@ test_files:
|
|
242
245
|
- spec/requests/rack_spec.rb
|
243
246
|
- spec/requests/rails_controller_rescue_spec.rb
|
244
247
|
- spec/spec_helper.rb
|
248
|
+
- spec/support/define_constants.rb
|
245
249
|
- spec/support/doing.rb
|
246
250
|
- spec/support/dummy_app.rb
|
247
251
|
- spec/support/hash_ext.rb
|