class RubyBeans::Container

Attributes

dependency_loading_called[RW]
dependent_containers[RW]
dependent_containers_names[RW]

Public Class Methods

_load_container_instances() click to toggle source
# File lib/ruby_beans/container.rb, line 19
def _load_container_instances
  self.instance.dependent_containers_names.each do |container|
    self.instance.dependent_containers.push(Object.const_get(container).send(:instance))
  end
end
load_containers(*containers) click to toggle source
# File lib/ruby_beans/container.rb, line 14
def load_containers(*containers)
  self.instance.dependency_loading_called = true
  self.instance.dependent_containers_names = containers
end
new() click to toggle source
# File lib/ruby_beans/container.rb, line 8
def initialize
  @dependency_loading_called = false
  @dependent_containers_names = []
  @dependent_containers = []
end

Public Instance Methods

method_missing(name, *args, &block) click to toggle source
Calls superclass method
# File lib/ruby_beans/container.rb, line 26
def method_missing(name, *args, &block)
  name = name.to_s

  if dependency_loading_called && dependent_containers.empty?
    self.class._load_container_instances
  end

  if name.start_with?('get_') && name.end_with?('_bean')
    result = nil
    dependent_containers.each do |container|
      result = container.send(name)
    end
    result
  elsif name.end_with?('_bean')
    bean = RubyBeans::Cache.get name
    unless bean
      bean = self.send("get_#{name}")
      RubyBeans::Cache.put(name, bean)
    end
    bean
  else
    super
  end
end