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