class RoadForest::Application::RouteBinding

Attributes

bindings[RW]
content_engine[RW]
guard[RW]
interface_builder[RW]
interface_class[RW]
path_spec[RW]
resource_type[RW]
route_name[RW]
services[RW]
trace[RW]

Public Class Methods

new(router) click to toggle source
# File lib/roadforest/application/route-adapter.rb, line 154
def initialize(router)
  @router = router
end

Public Instance Methods

build_interface(&block) click to toggle source
# File lib/roadforest/application/route-adapter.rb, line 175
def build_interface(&block)
  @interface_builder = block
end
build_resource(&block) click to toggle source
# File lib/roadforest/application/route-adapter.rb, line 167
def build_resource(&block)
  @resource_builder = block
end
resource_adapter() click to toggle source
# File lib/roadforest/application/route-adapter.rb, line 193
def resource_adapter
  @resource_adapter ||=
    begin
      ResourceAdapter.new.tap do |adapter|
        adapter.router = @router
        adapter.route_name = route_name
        adapter.interface_builder = interface_builder
        adapter.resource_builder = resource_builder
        adapter.content_engine = content_engine
        adapter.trace = trace
      end
    end
end
resource_builder() click to toggle source
# File lib/roadforest/application/route-adapter.rb, line 161
def resource_builder
  @resource_builder ||= proc do |request, response|
    Resource.get(resource_type).new(request, response)
  end
end
route() click to toggle source
# File lib/roadforest/application/route-adapter.rb, line 179
def route
  @route ||=
    begin
      route =
        if guard.nil?
          Route.new(path_spec, resource_adapter, bindings || {})
        else
          Route.new(path_spec, resource_adapter, bindings || {}, &guard)
        end
      route.name = route_name
      route
    end
end
validate!() click to toggle source
# File lib/roadforest/application/route-adapter.rb, line 207
def validate!
  problems = []

  if @path_spec.nil?
    problems << "Path specification is nil - no way to route URLs here."
  end

  if @resource_builder.nil? && @resource_type.nil?
    problems << "No means provided to build a resource adapter: set resource_type or resource_builder"
  end

  if @interface_builder.nil? and @interface_class.nil?
    problems << "No means provided to build an application interface: set interface_class or interface_builder"
  end

  unless problems.empty?
    raise InvalidRouteDefinition, "Route invalid:\n  #{problems.join("  \n")}"
  end
  return true
end