Module: DifferedDelegator

Included in:
Binder::AR
Defined in:
lib/active_record_binder.rb

Overview

Private: A simple module that delegates classes methods when needed, keeping the calls in memory.

Instance Method Summary collapse

Instance Method Details

#delegate_to(klass_or_object) ⇒ Object



19
20
21
22
23
24
25
26
27
# File 'lib/active_record_binder.rb', line 19

def delegate_to klass_or_object
  @delegators.each do |data|
    unless data.empty?
      name = data[:name]
      args = data[:params]
      klass_or_object.send(name, *args)
    end
  end
end

#register_delegators(*args) ⇒ Object



7
8
9
10
11
12
13
14
15
16
17
# File 'lib/active_record_binder.rb', line 7

def register_delegators *args
  args.each do |delegator|
    delegator = delegator.to_s
    module_eval %Q{
      def self.#{delegator} *parameters
        @delegators ||= []
        @delegators << { name: :#{delegator}, params: parameters }
      end
    }
  end
end