Class LazyMethods::Proxy
In: lib/lazy_methods.rb
Parent: Object

The proxy object does all the heavy lifting.

Methods

Constants

PROTECTED_METHODS = %w(initialize __proxy_result__ __proxy_loaded__ method_missing)   These methods we don‘t want to override. All other existing methods will be redefined.

Public Class methods

[Source]

    # File lib/lazy_methods.rb, line 52
52:     def initialize (obj, method, args = nil, &block)
53:       @object = obj
54:       @method = method
55:       @args = args || []
56:       @block = block
57:       
58:       # Override already defined methods on Object to proxy them to the result object
59:       methods.each do |m|
60:         eval "def self.#{m} (*args, &block); __proxy_result__.send(:#{m}, *args, &block); end" unless PROTECTED_METHODS.include?(m)
61:       end
62:     end

Public Instance methods

Helper method that indicates if the proxy has loaded the original method results yet.

[Source]

    # File lib/lazy_methods.rb, line 71
71:     def __proxy_loaded__
72:       !!defined?(@proxy_result)
73:     end

Get the result of the original method call. The original method will only be called once.

[Source]

    # File lib/lazy_methods.rb, line 65
65:     def __proxy_result__
66:       @proxy_result = @object.send(@method, *@args, &@block) unless defined?(@proxy_result)
67:       @proxy_result
68:     end

All missing methods are proxied to the original result object.

[Source]

    # File lib/lazy_methods.rb, line 76
76:     def method_missing (method, *args, &block)
77:       __proxy_result__.send(method, *args, &block)
78:     end

[Validate]