14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
# File 'lib/gracefully/degradable.rb', line 14
def gracefully_degrade(method, options)
@__gracefully_degradable_methods__ ||= {}
fallback_method, fallback_options = options[:fallback].first
fallback_options ||= {}
original_method = "#{method}_without_graceful_degradation"
@__gracefully_degradable_methods__[method] =
Gracefully.degradable_command(options) { |instance, *args, &block|
instance.__send__(original_method, *args, &block)
}.fallback_to(fallback_options) { |instance, *args, &block|
instance.__send__(fallback_method, *args, &block)
}
alias_method original_method, method
define_method method do |*args, &block|
__call_gracefully_degradable_method__(method, *args, &block)
end
end
|