crashlog 1.0.0 → 1.0.1

Sign up to get free protection for your applications and to get access to all the features.
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