Class: FastlaneCore::CrashReporting

Inherits:
Object
  • Object
show all
Defined in:
lib/fastlane_core/crash_reporting/crash_reporting.rb

Constant Summary collapse

URL =
'https://02c6a8be5bd4425389706655f3657f5c:[email protected]/55281'

Class Method Summary collapse

Class Method Details

.ask_during_setupObject

Ask the user politely if they want to send crash reports



36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
# File 'lib/fastlane_core/crash_reporting/crash_reporting.rb', line 36

def ask_during_setup
  return if enabled?

  puts "-------------------------------------------------------------------------------------------".yellow
  puts "😃  Do you want to enable crash reporting when fastlane experiences a problem?".yellow
  puts "👍  This makes resolving issues much easier and helps improving fastlane".yellow
  puts "🔒  The reports might contain personal data, but will be stored securely on getsentry.com".yellow
  puts "✨  Once crash reporting is enabled, you have much cleaner output when something goes wrong".yellow
  puts "🙊  More information about privacy: https://github.com/KrauseFx/fastlane/releases/tag/1.33.3".yellow
  puts "🌴  You can always enable crash reports at a later point using `fastlane enable_crash_reporting`".yellow
  puts "-------------------------------------------------------------------------------------------".yellow
  if agree("Do you want to enable crash reporting? (y/n) ", true)
    enable
  end
end

.disableObject



16
17
18
19
# File 'lib/fastlane_core/crash_reporting/crash_reporting.rb', line 16

def disable
  File.delete(file_path) if File.exist?(file_path)
  puts "Disabled crash reporting :("
end

.enableObject



9
10
11
12
13
14
# File 'lib/fastlane_core/crash_reporting/crash_reporting.rb', line 9

def enable
  File.write(file_path, "1")
  puts "Successfully enabled crash reporting for future crashes".green
  puts "This will only send the stack trace the installed gems to sentry".green
  puts "Thanks for helping making fastlane better".green
end

.enabled?Boolean

Returns:

  • (Boolean)


21
22
23
# File 'lib/fastlane_core/crash_reporting/crash_reporting.rb', line 21

def enabled?
  File.exist?(file_path)
end

.file_pathObject



5
6
7
# File 'lib/fastlane_core/crash_reporting/crash_reporting.rb', line 5

def file_path
  File.expand_path(File.join('~/.fastlane_crash_reporting'))
end

.handle_crash(ex) ⇒ Object



52
53
54
55
56
57
58
59
60
61
62
# File 'lib/fastlane_core/crash_reporting/crash_reporting.rb', line 52

def handle_crash(ex)
  unless enabled?
    show_message
    raise ex
  end

  raise ex if Helper.test?

  send_crash(ex)
  Kernel.abort # => return status 1, we could pass a message here too, but this would end up with duplicates
end

.send_crash(ex) ⇒ Object



64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
# File 'lib/fastlane_core/crash_reporting/crash_reporting.rb', line 64

def send_crash(ex)
  # https://github.com/getsentry/raven-ruby/wiki/Advanced-Configuration
  require 'raven'
  require 'json'
  require 'fastlane_core/crash_reporting/clean_stack_trace'

  Raven.configure do |config|
    config.dsn = URL
    config.logger = Logger.new('/dev/null') # we couldn't care less
    config.sanitize_fields = %w(server_name)
    config.processors << Raven::Processor::CleanStackTrace
  end

  Raven::Context.clear! # we don't want to transfer things like the host name
  crash = Raven.capture_exception(ex)
  path = "/tmp/sentry_#{crash.id}.json"
  File.write(path, JSON.pretty_generate(crash.to_hash))
  puts "Successfully submitted crash report. If this is a problem with one of the tools you want to report".yellow
  puts "please submit an issue on GitHub and attach the following number to it: '#{crash.id}'".yellow
  puts "Also stored the crash report locally '#{path}'".yellow
rescue => ex
  Helper.log.debug ex # We don't want crash reporting to cause crash
end

.show_messageObject



25
26
27
28
29
30
31
32
33
# File 'lib/fastlane_core/crash_reporting/crash_reporting.rb', line 25

def show_message
  puts "-------------------------------------------------------------------------------------------".yellow
  puts "😨  An error occured. Please enable crash reports using `fastlane enable_crash_reporting`".yellow
  puts "👍  This makes resolving issues much easier and helps improving fastlane".yellow
  puts "🔒  The reports might contain personal data, but will be stored securely on getsentry.com".yellow
  puts "✨  Once crash reporting is enabled, you have much cleaner output when something goes wrong".yellow
  puts "🙊  More information about privacy: https://github.com/KrauseFx/fastlane/releases/tag/1.33.3".yellow
  puts "-------------------------------------------------------------------------------------------".yellow
end