Class: ProcessWanker::Deferred

Inherits:
Object
  • Object
show all
Defined in:
lib/config/config_node.rb

Overview

Deferred

there are situations where we don’t wish to evaluate all of the configuration unless necessary - for instance, we don’t want the daemon to evaluate the list of clusters in the client configuration (particularly if it involves querying the cloud).

so, we wrap blocks in Deferred objects which are transparently evaluated on-demand.

Instance Method Summary collapse

Constructor Details

#initialize(deferred_container, deferred_args, deferred_block, deferred_builder) ⇒ Deferred

Returns a new instance of Deferred.



66
67
68
69
70
71
72
# File 'lib/config/config_node.rb', line 66

def initialize(deferred_container,deferred_args,deferred_block,deferred_builder)
  @deferred_container=deferred_container
  @deferred_args=deferred_args
  @deferred_block=deferred_block
  @deferred_builder=deferred_builder
  @deferred_object=nil
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(name, *args) ⇒ Object



74
75
76
77
78
79
80
81
82
# File 'lib/config/config_node.rb', line 74

def method_missing(name,*args)
  if(!@deferred_object)
    @deferred_object=@deferred_builder.new.build(
      @deferred_container,
      @deferred_args,
      @deferred_block)
  end
  @deferred_object.send(name,*args)
end