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 CHANGED
@@ -8,7 +8,7 @@ GIT
8
8
  PATH
9
9
  remote: .
10
10
  specs:
11
- crashlog (1.0.0.rc1)
11
+ crashlog (1.0.0)
12
12
  activesupport
13
13
  crashlog-auth-hmac (~> 1.1.6)
14
14
  faraday
@@ -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
- # add_environment_data(:system => SystemInformation.to_hash)
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 add_user_data(data, value = nil)
56
- if data.respond_to?(:keys)
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
- (@environment[:session] ||= {}).merge!(data) if data.is_a?(Hash)
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)
@@ -1,7 +1,7 @@
1
1
  module CrashLog
2
2
  module Rails
3
3
 
4
- # CrashLog controller integration
4
+ # CrashLog Rails 2.x controller integration
5
5
  # Aliases method chain for Rails internal rescue action
6
6
  module ActionControllerRescue
7
7
  def self.included(base)
@@ -3,25 +3,27 @@ module CrashLog
3
3
  module ControllerMethods
4
4
 
5
5
  def crash_log_context
6
- { :parameters => crash_log_filter_if_filtering(params.to_hash),
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
- #request_data[:meta_data][:custom] = custom_data if custom_data
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
- controller = env['action_controller.instance']
13
+ begin
14
+ controller = env['action_controller.instance']
15
+ CrashLog.notify_or_ignore(exception, crash_log_context(controller, env))
14
16
 
15
- CrashLog.notify_or_ignore(exception) #,
16
- # crash_log_context(controller, env))
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
- if defined?(controller.rescue_action_in_public_without_crash_log)
19
- controller.rescue_action_in_public_without_crash_log(exception)
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
- # TODO: Replace this with user context lookup
33
- if controller.respond_to?(:crash_log_request_data)
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
@@ -5,3 +5,4 @@ attribute :event
5
5
  attribute :backtrace
6
6
  attribute :environment
7
7
  attribute :context
8
+ attribute :data
@@ -1,3 +1,3 @@
1
1
  module CrashLog
2
- VERSION = "1.0.0"
2
+ VERSION = "1.0.1"
3
3
  end
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, context = {})
56
- send_notification(exception, context).tap do |notification|
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, context = {})
135
+ def build_payload(exception, data = {})
135
136
  Payload.build(exception, configuration) do |payload|
136
- payload.add_context(context)
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
@@ -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
- stub('configuration').tap do |config|
9
- config.stub(:[])
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 'user_data should be empty' do
25
- subject.context.should be_empty
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 => "user@example.com"}
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.environment[:session].should be_nil
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.environment[:session].should == data
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.environment[:session][:path].should == data_1[:path]
53
- subject.environment[:session][:count].should == data_2[:count]
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 'exception' do
77
+ describe 'event' do
76
78
 
77
- it 'has class_name' do
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
- describe 'backtrace' do
86
- it 'has line number' do
87
- subject.body.to_json.should have_json_path('backtrace/0/number')
88
- end
87
+ it 'has timestamp' do
88
+ subject.body.to_json.should have_json_path('event/timestamp')
89
+ end
90
+ end
89
91
 
90
- it 'has integer as line number' do
91
- subject.body.to_json.should have_json_type(Integer).at_path('backtrace/0/number')
92
- end
92
+ it 'has backtrace' do
93
+ subject.body.to_json.should have_json_path('backtrace/0')
94
+ end
93
95
 
94
- it 'has filename' do
95
- subject.body.to_json.should have_json_path('backtrace/0/file')
96
- end
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
- it 'has method' do
99
- subject.body.to_json.should have_json_path('backtrace/0/method')
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 backtrace' do
104
- subject.body.to_json.should have_json_path('backtrace/0')
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 timestamp' do
108
- subject.body.to_json.should have_json_path('event/timestamp')
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 'session' do
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 'user_data' do
117
- it 'has first key provided by user' do
118
- pending
119
- # subject.add_user_data({:email => "user@example.com"})
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
@@ -0,0 +1,9 @@
1
+ class CurrentUser
2
+ attr_reader :username, :full_name, :id
3
+
4
+ def initialize(*args)
5
+ @id = 1337
6
+ @username = "testuser"
7
+ @full_name = "Test User"
8
+ end
9
+ end
@@ -1,6 +1,7 @@
1
1
  Rails.application.routes.draw do
2
2
 
3
3
  get 'broken' => 'break#really_broken'
4
+ get 'manual' => 'break#manual_notify'
4
5
 
5
6
  root :to => "break#index"
6
7
  end
@@ -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
- CrashLog.should_receive(:notify_or_ignore).with(kind_of(RuntimeError)).once
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
- # begin
24
- get '/broken'
25
- last_response.status.should == 500
26
- last_response.body.should match /We're sorry, but something went wrong/
27
- # rescue => e
28
- # nil
29
- # end
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.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-10 00:00:00.000000000 Z
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: &70193507965760 !ruby/object:Gem::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: *70193507965760
24
+ version_requirements: *70168301743680
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: faraday
27
- requirement: &70193507965340 !ruby/object:Gem::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: *70193507965340
35
+ version_requirements: *70168301743260
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: crashlog-auth-hmac
38
- requirement: &70193507964840 !ruby/object:Gem::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: *70193507964840
46
+ version_requirements: *70168301742760
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: yajl-ruby
49
- requirement: &70193507964420 !ruby/object:Gem::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: *70193507964420
57
+ version_requirements: *70168301742340
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: rabl
60
- requirement: &70193507963880 !ruby/object:Gem::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: *70193507963880
68
+ version_requirements: *70168301741800
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: uuid
71
- requirement: &70193507963460 !ruby/object:Gem::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: *70193507963460
79
+ version_requirements: *70168301741380
80
80
  - !ruby/object:Gem::Dependency
81
81
  name: hashr
82
- requirement: &70193507963000 !ruby/object:Gem::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: *70193507963000
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