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
|