Class: RoadForest::Dispatcher

Inherits:
Webmachine::Dispatcher
  • Object
show all
Defined in:
lib/roadforest/application/dispatcher.rb

Defined Under Namespace

Classes: Route

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(application) ⇒ Dispatcher

Returns a new instance of Dispatcher.



6
7
8
9
10
11
# File 'lib/roadforest/application/dispatcher.rb', line 6

def initialize(application)
  super(method(:create_resource))
  @application = application
  @route_names = {}
  @trace_by_default = false
end

Instance Attribute Details

#applicationObject

Returns the value of attribute application.



12
13
14
# File 'lib/roadforest/application/dispatcher.rb', line 12

def application
  @application
end

#trace_by_defaultObject

Returns the value of attribute trace_by_default.



12
13
14
# File 'lib/roadforest/application/dispatcher.rb', line 12

def trace_by_default
  @trace_by_default
end

Instance Method Details

#add_route(name, path_spec, resource_type, model_class, bindings = nil, &block) ⇒ Object Also known as: add



18
19
20
21
22
23
24
# File 'lib/roadforest/application/dispatcher.rb', line 18

def add_route(name, path_spec, resource_type, model_class, bindings = nil, &block)
  if trace_by_default
    return add_traced_route(name, path_spec, resource_type, model_class, bindings, &block)
  else
    return add_untraced_route(name, path_spec, resource_type, model_class, bindings, &block)
  end
end

#add_traced_route(name, path_spec, resource_type, model_class, bindings = nil, &block) ⇒ Object Also known as: add_traced



33
34
35
36
# File 'lib/roadforest/application/dispatcher.rb', line 33

def add_traced_route(name, path_spec, resource_type, model_class, bindings = nil, &block)
  resource = bundle_traced_resource(resource_type, model_class, name)
  resource_route(resource, name, path_spec, bindings, &block)
end

#add_untraced_route(name, path_spec, resource_type, model_class, bindings = nil, &block) ⇒ Object Also known as: add_untraced



27
28
29
30
# File 'lib/roadforest/application/dispatcher.rb', line 27

def add_untraced_route(name, path_spec, resource_type, model_class, bindings = nil, &block)
  resource = bundle_typed_resource(resource_type, model_class, name)
  resource_route(resource, name, path_spec, bindings, &block)
end

#bundle_traced_resource(resource_type, model_class, route_name) ⇒ Object



54
55
56
57
58
59
60
# File 'lib/roadforest/application/dispatcher.rb', line 54

def bundle_traced_resource(resource_type, model_class, route_name)
  resource_class = Resource.get(resource_type)
  Application::RouteAdapter.new(route_name, resource_class, model_class) do |adapter|
    adapter.application = application
    adapter.trace = true
  end
end

#bundle_typed_resource(resource_type, model_class, route_name) ⇒ Object



47
48
49
50
51
52
# File 'lib/roadforest/application/dispatcher.rb', line 47

def bundle_typed_resource(resource_type, model_class, route_name)
  resource_class = Resource.get(resource_type)
  Application::RouteAdapter.new(route_name, resource_class, model_class) do |adapter|
    adapter.application = application
  end
end

#resource_route(resource, name, path_spec, bindings) {|route| ... } ⇒ Object

Yields:

  • (route)


39
40
41
42
43
44
45
# File 'lib/roadforest/application/dispatcher.rb', line 39

def resource_route(resource, name, path_spec, bindings)
  route = Route.new(path_spec, resource, bindings || {})
  yield route if block_given?
  @route_names[name] = route
  @routes << route
  route
end

#route_for_name(name) ⇒ Object



14
15
16
# File 'lib/roadforest/application/dispatcher.rb', line 14

def route_for_name(name)
  @route_names.fetch(name)
end