Module: Robustly::Methods

Defined in:
lib/robustly.rb

Instance Method Summary collapse

Instance Method Details

#safely(options = {}) ⇒ Object Also known as: yolo, robustly



25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/robustly.rb', line 25

def safely(options = {})
  yield
rescue *Array(options[:only] || StandardError) => e
  raise e if Array(options[:except]).any? { |c| e.is_a?(c) }
  raise e if Robustly.raise_envs.include?(Robustly.env)
  sample = options[:sample] || options[:throttle]
  if sample ? rand < 1.0 / sample : true
    begin
      Robustly.report_exception(e) unless Array(options[:silence]).any? { |c| e.is_a?(c) }
    rescue => e2
      $stderr.puts "FAIL-SAFE #{e2.class.name}: #{e2.message}"
    end
  end
  options[:default]
end