Module: Roger::Helpers::GetCallable

Included in:
Release, Test
Defined in:
lib/roger/helpers/get_callable.rb

Overview

Helper to include the get_callbable method

Instance Method Summary collapse

Instance Method Details

#get_callable(callable, map) ⇒ Object

Makes callable into a object that responds to call.

Parameters:

  • callable (#call, Symbol, Class)

    If callable already responds to #call will just return callable, a Symbol will be searched for in the scope parameter, a class will be instantiated (and checked if it will respond to #call)

  • map, (Hash)

    Mapping to match symbol to a callable



11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# File 'lib/roger/helpers/get_callable.rb', line 11

def get_callable(callable, map)
  return callable if callable.respond_to?(:call)

  callable = map[callable] if callable.is_a?(Symbol) && map.key?(callable)

  callable = callable.new if callable.is_a?(Class)

  if callable.respond_to?(:call)
    callable
  else
    error_message = "Could not resolve #{callable.inspect}. Callable must"
    error_message << "be an object that responds to #call or a symbol that resolve"
    error_message << "to such an object or a class with a #call instance method."
    fail ArgumentError, error_message
  end
end