module Deferrable::ClassMethods
Public Instance Methods
_deferrable?(method_name)
click to toggle source
# File lib/deferrable.rb, line 59 def _deferrable?(method_name) _deferred_methods.include?(method_name) end
_deferred_methods()
click to toggle source
# File lib/deferrable.rb, line 63 def _deferred_methods @@_deferred_methods ||= Set.new end
_define_deferrable_method(method_name)
click to toggle source
# File lib/deferrable.rb, line 46 def _define_deferrable_method(method_name) original_method = instance_method(method_name) define_method(method_name) do |*args, **opts, &block| _reset_deferred_stack(method_name) returned_value = original_method.bind_call(self, *args, **opts, &block) ensure _execute_deferred_stack(method_name) returned_value end end
deferrable(*method_names)
click to toggle source
# File lib/deferrable.rb, line 37 def deferrable(*method_names) method_names.map(&:to_sym).each do |method_name| next if _deferrable?(method_name) _define_deferrable_method(method_name) _deferred_methods << method_name end end