module LittleBoxes::Dependant::ClassMethods

Attributes

config[RW]

Public Class Methods

extended(base) click to toggle source
# File lib/little_boxes/dependant.rb, line 22
def self.extended(base)
  base.class_eval do
    class << self
      attr_accessor :config
      instance_variable_set :@config, {}
    end
  end
end

Public Instance Methods

class_dependency(name, &default_block) click to toggle source
# File lib/little_boxes/dependant.rb, line 45
def class_dependency name, &default_block
  default_block ||= Proc.new do
    fail(DependencyNotFound, "Dependency #{name} not found")
  end

  @config ||= {}

  define_singleton_method name do
    @config[name] ||= default_block.call(@config[:box])
  end

  define_singleton_method "#{name}=" do |value|
    @config[name] = value
  end

  define_method name do
    self.class.config[name] ||= default_block.call(self.class.config[:box])
  end
end
configure() { |config| ... } click to toggle source
# File lib/little_boxes/dependant.rb, line 65
def configure(&block)
  yield @config
  self
end
dependency(name, &default_block) click to toggle source
# File lib/little_boxes/dependant.rb, line 31
def dependency name, &default_block
  default_block ||= Proc.new do
    fail(DependencyNotFound, "Dependency #{name} not found")
  end

  define_method name do
    @config[name] ||= default_block.call(@config[:box])
  end

  define_method "#{name}=" do |value|
    @config[name] = value
  end
end