Module: BasicAssumption::DefaultAssumption

Defined in:
lib/basic_assumption/default_assumption.rb,
lib/basic_assumption/default_assumption/base.rb,
lib/basic_assumption/default_assumption/rails.rb,
lib/basic_assumption/default_assumption/restful_rails.rb,
lib/basic_assumption/default_assumption/class_resolver.rb

Overview

Handles coordinating the default behaviors available in the application that is using the BasicAssumption library. Classes that extend BasicAssumption can use the default_assumption method to set their own default, like so:

class WidgetController
  default_assumption { Widget.find_by_id(123) }
end

Any calls to assume inside the WidgetController class that do not also pass a block will use this default block as their behavior.

Providing custom default classes

It is possible to pass a symbol instead of a block to the default_assumption call. BasicAssumption out of the box will understand the symbol :rails as an option passed to default_assumption, and will use the block provided by an instance of BasicAssumption::DefaultAssumption::Rails as the default behavior.

BasicAssumption will use the same process for any symbol passed to default_assumption. If you pass it :my_custom_default it will attempt to find a class BasicAssumption::DefaultAssumption::MyCustomDefault that provides a block instance method, and use the result as the default behavior. See the Rails class for an example.

Defined Under Namespace

Classes: Base, ClassResolver, Rails, RestfulRails

Class Attribute Summary collapse

Class Method Summary collapse

Class Attribute Details

.defaultObject

:nodoc:



46
47
48
# File 'lib/basic_assumption/default_assumption.rb', line 46

def default
  @default
end

Class Method Details

.register(klass, default) ⇒ Object

:nodoc:



31
32
33
# File 'lib/basic_assumption/default_assumption.rb', line 31

def self.register(klass, default) #:nodoc:
  registry[klass.name] = strategy(default)
end

.resolve(klass) ⇒ Object

:nodoc:



35
36
37
38
39
40
41
42
43
# File 'lib/basic_assumption/default_assumption.rb', line 35

def self.resolve(klass) #:nodoc:
  return strategy(klass) if klass.kind_of?(Symbol)
  while !registry.has_key?(klass.name)
    klass = superclass(klass)
    break if klass.nil?
  end
  lookup = klass && klass.name
  registry[lookup]
end