module ErpBaseErpSvcs::Extensions::Core::ActsAsAspectorOn::ClassMethods

Public Instance Methods

acts_as_aspector_on(*meth_names) click to toggle source
# File lib/erp_base_erp_svcs/extensions/core/acts_as_aspector_on.rb, line 31
def acts_as_aspector_on(*meth_names)
  self.instance_eval do

    define_singleton_method :before do |method_name, &blk|
      if meth_names.include?(method_name)
        m = instance_method(method_name)
        define_method(method_name) do |*args, &block|
          blk.call(self) unless blk.nil?
          m.bind(self).call(*args, &block)
        end
      end
    end

    
    define_singleton_method :after do |method_name, &blk|
      if meth_names.include?(method_name)
        m = instance_method(method_name)
        define_method(method_name) do |*args, &block|
          result = m.bind(self).call(*args, &block)
          blk.call(self, result) unless blk.nil?
          result
        end
      end
    end
    
   end # instance_eval

 
end