raygun4ruby 3.2.3 → 3.2.4
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.
- checksums.yaml +4 -4
- data/.gitignore +18 -18
- data/.rspec +1 -1
- data/.travis.yml +20 -20
- data/CHANGELOG.md +127 -124
- data/Gemfile +4 -4
- data/LICENSE.txt +22 -22
- data/README.md +420 -420
- data/Rakefile +27 -27
- data/examples/sinatras_raygun.rb +17 -17
- data/lib/generators/raygun/install_generator.rb +26 -26
- data/lib/raygun.rb +179 -179
- data/lib/raygun/affected_user.rb +59 -59
- data/lib/raygun/breadcrumbs.rb +34 -34
- data/lib/raygun/breadcrumbs/breadcrumb.rb +34 -34
- data/lib/raygun/breadcrumbs/store.rb +86 -86
- data/lib/raygun/client.rb +305 -305
- data/lib/raygun/configuration.rb +194 -194
- data/lib/raygun/error.rb +10 -10
- data/lib/raygun/javascript_tracker.rb +42 -42
- data/lib/raygun/middleware/breadcrumbs_store_initializer.rb +19 -19
- data/lib/raygun/middleware/javascript_exception_tracking.rb +32 -32
- data/lib/raygun/middleware/rack_exception_interceptor.rb +18 -18
- data/lib/raygun/middleware/rails_insert_affected_user.rb +26 -26
- data/lib/raygun/railtie.rb +39 -39
- data/lib/raygun/services/apply_whitelist_filter_to_payload.rb +27 -27
- data/lib/raygun/sidekiq.rb +71 -70
- data/lib/raygun/testable.rb +22 -22
- data/lib/raygun/version.rb +3 -3
- data/lib/raygun4ruby.rb +1 -1
- data/lib/resque/failure/raygun.rb +25 -25
- data/lib/tasks/raygun.tasks +7 -7
- data/raygun4ruby.gemspec +45 -45
- data/spec/dummy/.gitignore +17 -17
- data/spec/dummy/Gemfile +47 -47
- data/spec/dummy/README.rdoc +28 -28
- data/spec/dummy/Rakefile +6 -6
- data/spec/dummy/app/assets/config/manifest.js +2 -2
- data/spec/dummy/app/assets/javascripts/application.js +13 -13
- data/spec/dummy/app/assets/stylesheets/application.css +15 -15
- data/spec/dummy/app/controllers/application_controller.rb +5 -5
- data/spec/dummy/app/controllers/home_controller.rb +4 -4
- data/spec/dummy/app/helpers/application_helper.rb +2 -2
- data/spec/dummy/app/views/home/index.html.erb +3 -3
- data/spec/dummy/app/views/home/index.json.erb +1 -1
- data/spec/dummy/app/views/layouts/application.html.erb +14 -14
- data/spec/dummy/bin/bundle +3 -3
- data/spec/dummy/bin/rails +9 -9
- data/spec/dummy/bin/rake +9 -9
- data/spec/dummy/bin/setup +29 -29
- data/spec/dummy/bin/spring +17 -17
- data/spec/dummy/config.ru +4 -4
- data/spec/dummy/config/application.rb +26 -26
- data/spec/dummy/config/boot.rb +3 -3
- data/spec/dummy/config/database.yml +25 -25
- data/spec/dummy/config/environment.rb +5 -5
- data/spec/dummy/config/environments/development.rb +41 -41
- data/spec/dummy/config/environments/production.rb +79 -79
- data/spec/dummy/config/environments/test.rb +42 -42
- data/spec/dummy/config/initializers/assets.rb +11 -11
- data/spec/dummy/config/initializers/backtrace_silencers.rb +7 -7
- data/spec/dummy/config/initializers/cookies_serializer.rb +3 -3
- data/spec/dummy/config/initializers/filter_parameter_logging.rb +4 -4
- data/spec/dummy/config/initializers/inflections.rb +16 -16
- data/spec/dummy/config/initializers/mime_types.rb +4 -4
- data/spec/dummy/config/initializers/session_store.rb +3 -3
- data/spec/dummy/config/initializers/to_time_preserves_timezone.rb +10 -10
- data/spec/dummy/config/initializers/wrap_parameters.rb +14 -14
- data/spec/dummy/config/locales/en.yml +23 -23
- data/spec/dummy/config/routes.rb +58 -58
- data/spec/dummy/config/secrets.yml +22 -22
- data/spec/dummy/db/seeds.rb +7 -7
- data/spec/dummy/public/404.html +67 -67
- data/spec/dummy/public/422.html +67 -67
- data/spec/dummy/public/500.html +66 -66
- data/spec/dummy/public/robots.txt +5 -5
- data/spec/dummy/test/test_helper.rb +10 -10
- data/spec/features/javascript_spec.rb +48 -48
- data/spec/rails_helper.rb +4 -4
- data/spec/raygun/breadcrumbs/breadcrumb_spec.rb +171 -171
- data/spec/raygun/breadcrumbs/store_spec.rb +170 -170
- data/spec/raygun/raygun_spec.rb +47 -47
- data/spec/services/apply_whitelist_filter_to_payload_spec.rb +251 -251
- data/spec/spec_helper.rb +24 -24
- data/spec/support/fake_logger.rb +17 -17
- data/test/integration/client_test.rb +19 -19
- data/test/test_helper.rb +72 -72
- data/test/unit/affected_user_test.rb +136 -136
- data/test/unit/client_test.rb +792 -792
- data/test/unit/configuration_test.rb +206 -206
- data/test/unit/raygun_test.rb +25 -25
- data/test/unit/resque_failure_test.rb +24 -24
- data/test/unit/sidekiq_failure_test.rb +32 -32
- metadata +7 -7
data/Rakefile
CHANGED
@@ -1,27 +1,27 @@
|
|
1
|
-
#!/usr/bin/env rake
|
2
|
-
require "bundler/gem_tasks"
|
3
|
-
|
4
|
-
require "rake/testtask"
|
5
|
-
|
6
|
-
namespace :test do
|
7
|
-
|
8
|
-
desc "Test the basics of the adapter"
|
9
|
-
Rake::TestTask.new(:units) do |t|
|
10
|
-
t.test_files = FileList["test/unit/*_test.rb"]
|
11
|
-
end
|
12
|
-
|
13
|
-
desc "Run a test against the live API"
|
14
|
-
Rake::TestTask.new(:integration) do |t|
|
15
|
-
t.test_files = FileList["test/integration/*_test.rb"]
|
16
|
-
end
|
17
|
-
|
18
|
-
begin
|
19
|
-
require 'rspec/core/rake_task'
|
20
|
-
|
21
|
-
RSpec::Core::RakeTask.new(:spec)
|
22
|
-
|
23
|
-
rescue LoadError
|
24
|
-
end
|
25
|
-
end
|
26
|
-
|
27
|
-
task default: ["test:units", "test:spec"]
|
1
|
+
#!/usr/bin/env rake
|
2
|
+
require "bundler/gem_tasks"
|
3
|
+
|
4
|
+
require "rake/testtask"
|
5
|
+
|
6
|
+
namespace :test do
|
7
|
+
|
8
|
+
desc "Test the basics of the adapter"
|
9
|
+
Rake::TestTask.new(:units) do |t|
|
10
|
+
t.test_files = FileList["test/unit/*_test.rb"]
|
11
|
+
end
|
12
|
+
|
13
|
+
desc "Run a test against the live API"
|
14
|
+
Rake::TestTask.new(:integration) do |t|
|
15
|
+
t.test_files = FileList["test/integration/*_test.rb"]
|
16
|
+
end
|
17
|
+
|
18
|
+
begin
|
19
|
+
require 'rspec/core/rake_task'
|
20
|
+
|
21
|
+
RSpec::Core::RakeTask.new(:spec)
|
22
|
+
|
23
|
+
rescue LoadError
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
task default: ["test:units", "test:spec"]
|
data/examples/sinatras_raygun.rb
CHANGED
@@ -1,18 +1,18 @@
|
|
1
|
-
# NB: You'll need to install the 'sinatra' gem for this to work :)
|
2
|
-
# $ gem install sinatra
|
3
|
-
# $ ruby sinatras_raygun.rb
|
4
|
-
|
5
|
-
require 'sinatra'
|
6
|
-
require_relative '../lib/raygun4ruby'
|
7
|
-
|
8
|
-
Raygun.setup do |config|
|
9
|
-
config.api_key = YOUR_RAYGUN_API_KEY_HERE
|
10
|
-
end
|
11
|
-
|
12
|
-
use Raygun::RackExceptionInterceptor
|
13
|
-
|
14
|
-
set :raise_errors, true
|
15
|
-
|
16
|
-
get '/' do
|
17
|
-
raise "This is an exception that will be sent to Raygun!"
|
1
|
+
# NB: You'll need to install the 'sinatra' gem for this to work :)
|
2
|
+
# $ gem install sinatra
|
3
|
+
# $ ruby sinatras_raygun.rb
|
4
|
+
|
5
|
+
require 'sinatra'
|
6
|
+
require_relative '../lib/raygun4ruby'
|
7
|
+
|
8
|
+
Raygun.setup do |config|
|
9
|
+
config.api_key = YOUR_RAYGUN_API_KEY_HERE
|
10
|
+
end
|
11
|
+
|
12
|
+
use Raygun::RackExceptionInterceptor
|
13
|
+
|
14
|
+
set :raise_errors, true
|
15
|
+
|
16
|
+
get '/' do
|
17
|
+
raise "This is an exception that will be sent to Raygun!"
|
18
18
|
end
|
@@ -1,26 +1,26 @@
|
|
1
|
-
module Raygun
|
2
|
-
class InstallGenerator < Rails::Generators::Base
|
3
|
-
|
4
|
-
argument :api_key
|
5
|
-
|
6
|
-
desc "This generator creates a configuration file for the Raygun ruby adapter inside config/initializers"
|
7
|
-
def create_configuration_file
|
8
|
-
filter_parameters = if defined?(Rails)
|
9
|
-
"config.filter_parameters = Rails.application.config.filter_parameters"
|
10
|
-
else
|
11
|
-
"config.filter_parameters = [ :password, :card_number, :cvv ] # don't forget to filter out sensitive parameters"
|
12
|
-
end
|
13
|
-
initializer "raygun.rb" do
|
14
|
-
<<-EOS
|
15
|
-
Raygun.setup do |config|
|
16
|
-
config.api_key = "#{api_key}"
|
17
|
-
#{filter_parameters}
|
18
|
-
|
19
|
-
# The default is Rails.env.production?
|
20
|
-
# config.enable_reporting = !Rails.env.development? && !Rails.env.test?
|
21
|
-
end
|
22
|
-
EOS
|
23
|
-
end
|
24
|
-
end
|
25
|
-
end
|
26
|
-
end
|
1
|
+
module Raygun
|
2
|
+
class InstallGenerator < Rails::Generators::Base
|
3
|
+
|
4
|
+
argument :api_key
|
5
|
+
|
6
|
+
desc "This generator creates a configuration file for the Raygun ruby adapter inside config/initializers"
|
7
|
+
def create_configuration_file
|
8
|
+
filter_parameters = if defined?(Rails)
|
9
|
+
"config.filter_parameters = Rails.application.config.filter_parameters"
|
10
|
+
else
|
11
|
+
"config.filter_parameters = [ :password, :card_number, :cvv ] # don't forget to filter out sensitive parameters"
|
12
|
+
end
|
13
|
+
initializer "raygun.rb" do
|
14
|
+
<<-EOS
|
15
|
+
Raygun.setup do |config|
|
16
|
+
config.api_key = "#{api_key}"
|
17
|
+
#{filter_parameters}
|
18
|
+
|
19
|
+
# The default is Rails.env.production?
|
20
|
+
# config.enable_reporting = !Rails.env.development? && !Rails.env.test?
|
21
|
+
end
|
22
|
+
EOS
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
data/lib/raygun.rb
CHANGED
@@ -1,179 +1,179 @@
|
|
1
|
-
require "concurrent"
|
2
|
-
require "httparty"
|
3
|
-
require "logger"
|
4
|
-
require "json"
|
5
|
-
require "socket"
|
6
|
-
require "rack"
|
7
|
-
require "ostruct"
|
8
|
-
|
9
|
-
require "raygun/version"
|
10
|
-
require "raygun/configuration"
|
11
|
-
require "raygun/client"
|
12
|
-
require "raygun/javascript_tracker"
|
13
|
-
require "raygun/middleware/rack_exception_interceptor"
|
14
|
-
require "raygun/middleware/breadcrumbs_store_initializer"
|
15
|
-
require "raygun/middleware/javascript_exception_tracking"
|
16
|
-
require "raygun/testable"
|
17
|
-
require "raygun/error"
|
18
|
-
require "raygun/affected_user"
|
19
|
-
require "raygun/services/apply_whitelist_filter_to_payload"
|
20
|
-
require "raygun/breadcrumbs/breadcrumb"
|
21
|
-
require "raygun/breadcrumbs/store"
|
22
|
-
require "raygun/breadcrumbs"
|
23
|
-
require "raygun/railtie" if defined?(Rails)
|
24
|
-
|
25
|
-
module Raygun
|
26
|
-
|
27
|
-
# used to identify ourselves to Raygun
|
28
|
-
CLIENT_URL = "https://github.com/MindscapeHQ/raygun4ruby"
|
29
|
-
CLIENT_NAME = "Raygun4Ruby Gem"
|
30
|
-
|
31
|
-
class << self
|
32
|
-
include Testable
|
33
|
-
|
34
|
-
# Configuration Object (instance of Raygun::Configuration)
|
35
|
-
attr_writer :configuration
|
36
|
-
|
37
|
-
def setup
|
38
|
-
yield(configuration)
|
39
|
-
|
40
|
-
log("configuration settings: #{configuration.inspect}")
|
41
|
-
end
|
42
|
-
|
43
|
-
def configuration
|
44
|
-
@configuration ||= Configuration.new
|
45
|
-
end
|
46
|
-
|
47
|
-
def default_configuration
|
48
|
-
configuration.defaults
|
49
|
-
end
|
50
|
-
|
51
|
-
def reset_configuration
|
52
|
-
@configuration = Configuration.new
|
53
|
-
end
|
54
|
-
|
55
|
-
def configured?
|
56
|
-
!!configuration.api_key
|
57
|
-
end
|
58
|
-
|
59
|
-
def track_exception(exception_instance, env = {}, user = nil, retry_count = 1)
|
60
|
-
log('tracking exception')
|
61
|
-
|
62
|
-
if configuration.send_in_background
|
63
|
-
track_exception_async(exception_instance, env, user, retry_count)
|
64
|
-
else
|
65
|
-
track_exception_sync(exception_instance, env, user, retry_count)
|
66
|
-
end
|
67
|
-
end
|
68
|
-
|
69
|
-
def track_exceptions
|
70
|
-
yield
|
71
|
-
rescue => e
|
72
|
-
track_exception(e)
|
73
|
-
end
|
74
|
-
|
75
|
-
def record_breadcrumb(
|
76
|
-
message: nil,
|
77
|
-
category: '',
|
78
|
-
level: :info,
|
79
|
-
timestamp: Time.now.utc,
|
80
|
-
metadata: {},
|
81
|
-
class_name: nil,
|
82
|
-
method_name: nil,
|
83
|
-
line_number: nil
|
84
|
-
)
|
85
|
-
log('recording breadcrumb')
|
86
|
-
|
87
|
-
Raygun::Breadcrumbs::Store.record(
|
88
|
-
message: message,
|
89
|
-
category: category,
|
90
|
-
level: level,
|
91
|
-
timestamp: timestamp,
|
92
|
-
metadata: metadata,
|
93
|
-
class_name: class_name,
|
94
|
-
method_name: method_name,
|
95
|
-
line_number: line_number,
|
96
|
-
)
|
97
|
-
end
|
98
|
-
|
99
|
-
def log(message)
|
100
|
-
return unless configuration.debug
|
101
|
-
|
102
|
-
configuration.logger.info("[Raygun] #{message}") if configuration.logger
|
103
|
-
end
|
104
|
-
|
105
|
-
def failsafe_log(message)
|
106
|
-
configuration.failsafe_logger.info(message)
|
107
|
-
end
|
108
|
-
|
109
|
-
def deprecation_warning(message)
|
110
|
-
if defined?(ActiveSupport::Deprecation)
|
111
|
-
ActiveSupport::Deprecation.warn(message)
|
112
|
-
else
|
113
|
-
puts message
|
114
|
-
end
|
115
|
-
end
|
116
|
-
|
117
|
-
private
|
118
|
-
|
119
|
-
def track_exception_async(*args)
|
120
|
-
future = Concurrent::Future.execute { track_exception_sync(*args) }
|
121
|
-
future.add_observer(lambda do |_, value, reason|
|
122
|
-
if value == nil || !value.responds_to?(:response) || value.response.code != "202"
|
123
|
-
log("unexpected response from Raygun, could indicate error: #{value.inspect}")
|
124
|
-
end
|
125
|
-
end, :call)
|
126
|
-
end
|
127
|
-
|
128
|
-
def track_exception_sync(exception_instance, env, user, retry_count)
|
129
|
-
if should_report?(exception_instance)
|
130
|
-
log('attempting to send exception')
|
131
|
-
resp = Client.new.track_exception(exception_instance, env, user)
|
132
|
-
log('sent payload to api')
|
133
|
-
|
134
|
-
resp
|
135
|
-
end
|
136
|
-
rescue Exception => e
|
137
|
-
log('error sending exception to raygun, see failsafe logger for more information')
|
138
|
-
|
139
|
-
if configuration.failsafe_logger
|
140
|
-
failsafe_log("Problem reporting exception to Raygun: #{e.class}: #{e.message}\n\n#{e.backtrace.join("\n")}")
|
141
|
-
end
|
142
|
-
|
143
|
-
if retry_count > 0
|
144
|
-
new_exception = e.exception("raygun4ruby encountered an exception processing your exception")
|
145
|
-
new_exception.set_backtrace(e.backtrace)
|
146
|
-
|
147
|
-
env[:custom_data] ||= {}
|
148
|
-
env[:custom_data].merge!(original_stacktrace: exception_instance.backtrace)
|
149
|
-
|
150
|
-
::Raygun::Breadcrumbs::Store.clear
|
151
|
-
|
152
|
-
track_exception(new_exception, env, user, retry_count - 1)
|
153
|
-
else
|
154
|
-
raise e
|
155
|
-
end
|
156
|
-
end
|
157
|
-
|
158
|
-
|
159
|
-
def print_api_key_warning
|
160
|
-
$stderr.puts(NO_API_KEY_MESSAGE)
|
161
|
-
end
|
162
|
-
|
163
|
-
def should_report?(exception)
|
164
|
-
if configuration.silence_reporting
|
165
|
-
log('skipping reporting because Configuration.silence_reporting is enabled')
|
166
|
-
|
167
|
-
return false
|
168
|
-
end
|
169
|
-
|
170
|
-
if configuration.ignore.flatten.include?(exception.class.to_s)
|
171
|
-
log("skipping reporting of exception #{exception.class} because it is in the ignore list")
|
172
|
-
|
173
|
-
return false
|
174
|
-
end
|
175
|
-
|
176
|
-
true
|
177
|
-
end
|
178
|
-
end
|
179
|
-
end
|
1
|
+
require "concurrent"
|
2
|
+
require "httparty"
|
3
|
+
require "logger"
|
4
|
+
require "json"
|
5
|
+
require "socket"
|
6
|
+
require "rack"
|
7
|
+
require "ostruct"
|
8
|
+
|
9
|
+
require "raygun/version"
|
10
|
+
require "raygun/configuration"
|
11
|
+
require "raygun/client"
|
12
|
+
require "raygun/javascript_tracker"
|
13
|
+
require "raygun/middleware/rack_exception_interceptor"
|
14
|
+
require "raygun/middleware/breadcrumbs_store_initializer"
|
15
|
+
require "raygun/middleware/javascript_exception_tracking"
|
16
|
+
require "raygun/testable"
|
17
|
+
require "raygun/error"
|
18
|
+
require "raygun/affected_user"
|
19
|
+
require "raygun/services/apply_whitelist_filter_to_payload"
|
20
|
+
require "raygun/breadcrumbs/breadcrumb"
|
21
|
+
require "raygun/breadcrumbs/store"
|
22
|
+
require "raygun/breadcrumbs"
|
23
|
+
require "raygun/railtie" if defined?(Rails)
|
24
|
+
|
25
|
+
module Raygun
|
26
|
+
|
27
|
+
# used to identify ourselves to Raygun
|
28
|
+
CLIENT_URL = "https://github.com/MindscapeHQ/raygun4ruby"
|
29
|
+
CLIENT_NAME = "Raygun4Ruby Gem"
|
30
|
+
|
31
|
+
class << self
|
32
|
+
include Testable
|
33
|
+
|
34
|
+
# Configuration Object (instance of Raygun::Configuration)
|
35
|
+
attr_writer :configuration
|
36
|
+
|
37
|
+
def setup
|
38
|
+
yield(configuration)
|
39
|
+
|
40
|
+
log("configuration settings: #{configuration.inspect}")
|
41
|
+
end
|
42
|
+
|
43
|
+
def configuration
|
44
|
+
@configuration ||= Configuration.new
|
45
|
+
end
|
46
|
+
|
47
|
+
def default_configuration
|
48
|
+
configuration.defaults
|
49
|
+
end
|
50
|
+
|
51
|
+
def reset_configuration
|
52
|
+
@configuration = Configuration.new
|
53
|
+
end
|
54
|
+
|
55
|
+
def configured?
|
56
|
+
!!configuration.api_key
|
57
|
+
end
|
58
|
+
|
59
|
+
def track_exception(exception_instance, env = {}, user = nil, retry_count = 1)
|
60
|
+
log('tracking exception')
|
61
|
+
|
62
|
+
if configuration.send_in_background
|
63
|
+
track_exception_async(exception_instance, env, user, retry_count)
|
64
|
+
else
|
65
|
+
track_exception_sync(exception_instance, env, user, retry_count)
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
def track_exceptions
|
70
|
+
yield
|
71
|
+
rescue => e
|
72
|
+
track_exception(e)
|
73
|
+
end
|
74
|
+
|
75
|
+
def record_breadcrumb(
|
76
|
+
message: nil,
|
77
|
+
category: '',
|
78
|
+
level: :info,
|
79
|
+
timestamp: Time.now.utc,
|
80
|
+
metadata: {},
|
81
|
+
class_name: nil,
|
82
|
+
method_name: nil,
|
83
|
+
line_number: nil
|
84
|
+
)
|
85
|
+
log('recording breadcrumb')
|
86
|
+
|
87
|
+
Raygun::Breadcrumbs::Store.record(
|
88
|
+
message: message,
|
89
|
+
category: category,
|
90
|
+
level: level,
|
91
|
+
timestamp: timestamp,
|
92
|
+
metadata: metadata,
|
93
|
+
class_name: class_name,
|
94
|
+
method_name: method_name,
|
95
|
+
line_number: line_number,
|
96
|
+
)
|
97
|
+
end
|
98
|
+
|
99
|
+
def log(message)
|
100
|
+
return unless configuration.debug
|
101
|
+
|
102
|
+
configuration.logger.info("[Raygun] #{message}") if configuration.logger
|
103
|
+
end
|
104
|
+
|
105
|
+
def failsafe_log(message)
|
106
|
+
configuration.failsafe_logger.info(message)
|
107
|
+
end
|
108
|
+
|
109
|
+
def deprecation_warning(message)
|
110
|
+
if defined?(ActiveSupport::Deprecation)
|
111
|
+
ActiveSupport::Deprecation.warn(message)
|
112
|
+
else
|
113
|
+
puts message
|
114
|
+
end
|
115
|
+
end
|
116
|
+
|
117
|
+
private
|
118
|
+
|
119
|
+
def track_exception_async(*args)
|
120
|
+
future = Concurrent::Future.execute { track_exception_sync(*args) }
|
121
|
+
future.add_observer(lambda do |_, value, reason|
|
122
|
+
if value == nil || !value.responds_to?(:response) || value.response.code != "202"
|
123
|
+
log("unexpected response from Raygun, could indicate error: #{value.inspect}")
|
124
|
+
end
|
125
|
+
end, :call)
|
126
|
+
end
|
127
|
+
|
128
|
+
def track_exception_sync(exception_instance, env, user, retry_count)
|
129
|
+
if should_report?(exception_instance)
|
130
|
+
log('attempting to send exception')
|
131
|
+
resp = Client.new.track_exception(exception_instance, env, user)
|
132
|
+
log('sent payload to api')
|
133
|
+
|
134
|
+
resp
|
135
|
+
end
|
136
|
+
rescue Exception => e
|
137
|
+
log('error sending exception to raygun, see failsafe logger for more information')
|
138
|
+
|
139
|
+
if configuration.failsafe_logger
|
140
|
+
failsafe_log("Problem reporting exception to Raygun: #{e.class}: #{e.message}\n\n#{e.backtrace.join("\n")}")
|
141
|
+
end
|
142
|
+
|
143
|
+
if retry_count > 0
|
144
|
+
new_exception = e.exception("raygun4ruby encountered an exception processing your exception")
|
145
|
+
new_exception.set_backtrace(e.backtrace)
|
146
|
+
|
147
|
+
env[:custom_data] ||= {}
|
148
|
+
env[:custom_data].merge!(original_stacktrace: exception_instance.backtrace)
|
149
|
+
|
150
|
+
::Raygun::Breadcrumbs::Store.clear
|
151
|
+
|
152
|
+
track_exception(new_exception, env, user, retry_count - 1)
|
153
|
+
else
|
154
|
+
raise e
|
155
|
+
end
|
156
|
+
end
|
157
|
+
|
158
|
+
|
159
|
+
def print_api_key_warning
|
160
|
+
$stderr.puts(NO_API_KEY_MESSAGE)
|
161
|
+
end
|
162
|
+
|
163
|
+
def should_report?(exception)
|
164
|
+
if configuration.silence_reporting
|
165
|
+
log('skipping reporting because Configuration.silence_reporting is enabled')
|
166
|
+
|
167
|
+
return false
|
168
|
+
end
|
169
|
+
|
170
|
+
if configuration.ignore.flatten.include?(exception.class.to_s)
|
171
|
+
log("skipping reporting of exception #{exception.class} because it is in the ignore list")
|
172
|
+
|
173
|
+
return false
|
174
|
+
end
|
175
|
+
|
176
|
+
true
|
177
|
+
end
|
178
|
+
end
|
179
|
+
end
|