Class: RoadForest::Dispatcher
- Inherits:
-
Webmachine::Dispatcher
- Object
- Webmachine::Dispatcher
- RoadForest::Dispatcher
- Defined in:
- lib/roadforest/application/dispatcher.rb
Defined Under Namespace
Classes: Route
Instance Attribute Summary collapse
-
#application ⇒ Object
Returns the value of attribute application.
-
#trace_by_default ⇒ Object
Returns the value of attribute trace_by_default.
Instance Method Summary collapse
- #add_route(name, path_spec, resource_type, model_class, bindings = nil, &block) ⇒ Object (also: #add)
- #add_traced_route(name, path_spec, resource_type, model_class, bindings = nil, &block) ⇒ Object (also: #add_traced)
- #add_untraced_route(name, path_spec, resource_type, model_class, bindings = nil, &block) ⇒ Object (also: #add_untraced)
- #bundle_traced_resource(resource_type, model_class, route_name) ⇒ Object
- #bundle_typed_resource(resource_type, model_class, route_name) ⇒ Object
-
#initialize(application) ⇒ Dispatcher
constructor
A new instance of Dispatcher.
- #resource_route(resource, name, path_spec, bindings) {|route| ... } ⇒ Object
- #route_for_name(name) ⇒ Object
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
#application ⇒ Object
Returns the value of attribute application.
12 13 14 |
# File 'lib/roadforest/application/dispatcher.rb', line 12 def application @application end |
#trace_by_default ⇒ Object
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
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 |