Class: ActionDispatch::Routing::RouteSet::NamedRouteCollection
- Inherits:
-
Object
- Object
- ActionDispatch::Routing::RouteSet::NamedRouteCollection
- Includes:
- Enumerable
- Defined in:
- lib/action_dispatch/routing/route_set.rb
Overview
A NamedRouteCollection instance is a collection of named routes, and also maintains an anonymous module that can be used to install helpers for the named routes.
Defined Under Namespace
Classes: UrlHelper
Instance Attribute Summary collapse
-
#path_helpers_module ⇒ Object
readonly
Returns the value of attribute path_helpers_module.
-
#url_helpers_module ⇒ Object
readonly
Returns the value of attribute url_helpers_module.
Instance Method Summary collapse
- #add(name, route) ⇒ Object (also: #[]=)
- #add_url_helper(name, defaults, &block) ⇒ Object
- #clear! ⇒ Object (also: #clear)
- #each ⇒ Object
- #get(name) ⇒ Object (also: #[])
- #helper_names ⇒ Object
-
#initialize ⇒ NamedRouteCollection
constructor
A new instance of NamedRouteCollection.
- #key?(name) ⇒ Boolean
- #length ⇒ Object
- #names ⇒ Object
- #route_defined?(name) ⇒ Boolean
Constructor Details
#initialize ⇒ NamedRouteCollection
Returns a new instance of NamedRouteCollection.
72 73 74 75 76 77 78 79 |
# File 'lib/action_dispatch/routing/route_set.rb', line 72 def initialize @routes = {} @path_helpers = Set.new @url_helpers = Set.new @custom_helpers = Set.new @url_helpers_module = Module.new @path_helpers_module = Module.new end |
Instance Attribute Details
#path_helpers_module ⇒ Object (readonly)
Returns the value of attribute path_helpers_module.
69 70 71 |
# File 'lib/action_dispatch/routing/route_set.rb', line 69 def path_helpers_module @path_helpers_module end |
#url_helpers_module ⇒ Object (readonly)
Returns the value of attribute url_helpers_module.
69 70 71 |
# File 'lib/action_dispatch/routing/route_set.rb', line 69 def url_helpers_module @url_helpers_module end |
Instance Method Details
#add(name, route) ⇒ Object Also known as: []=
118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 |
# File 'lib/action_dispatch/routing/route_set.rb', line 118 def add(name, route) key = name.to_sym path_name = :"#{name}_path" url_name = :"#{name}_url" if routes.key? key @path_helpers_module.send :undef_method, path_name @url_helpers_module.send :undef_method, url_name end routes[key] = route define_url_helper @path_helpers_module, route, path_name, route.defaults, name, PATH define_url_helper @url_helpers_module, route, url_name, route.defaults, name, UNKNOWN @path_helpers << path_name @url_helpers << url_name end |
#add_url_helper(name, defaults, &block) ⇒ Object
161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 |
# File 'lib/action_dispatch/routing/route_set.rb', line 161 def add_url_helper(name, defaults, &block) @custom_helpers << name helper = CustomUrlHelper.new(name, defaults, &block) @path_helpers_module.module_eval do define_method(:"#{name}_path") do |*args| helper.call(self, args, true) end end @url_helpers_module.module_eval do define_method(:"#{name}_url") do |*args| helper.call(self, args, false) end end end |
#clear! ⇒ Object Also known as: clear
90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 |
# File 'lib/action_dispatch/routing/route_set.rb', line 90 def clear! @path_helpers.each do |helper| @path_helpers_module.send :remove_method, helper end @url_helpers.each do |helper| @url_helpers_module.send :remove_method, helper end @custom_helpers.each do |helper| path_name = :"#{helper}_path" url_name = :"#{helper}_url" if @path_helpers_module.method_defined?(path_name) @path_helpers_module.send :remove_method, path_name end if @url_helpers_module.method_defined?(url_name) @url_helpers_module.send :remove_method, url_name end end @routes.clear @path_helpers.clear @url_helpers.clear @custom_helpers.clear end |
#each ⇒ Object
148 149 150 151 |
# File 'lib/action_dispatch/routing/route_set.rb', line 148 def each routes.each { |name, route| yield name, route } self end |
#get(name) ⇒ Object Also known as: []
135 136 137 |
# File 'lib/action_dispatch/routing/route_set.rb', line 135 def get(name) routes[name.to_sym] end |
#helper_names ⇒ Object
86 87 88 |
# File 'lib/action_dispatch/routing/route_set.rb', line 86 def helper_names @path_helpers.map(&:to_s) + @url_helpers.map(&:to_s) end |
#key?(name) ⇒ Boolean
139 140 141 142 |
# File 'lib/action_dispatch/routing/route_set.rb', line 139 def key?(name) return unless name routes.key? name.to_sym end |
#length ⇒ Object
157 158 159 |
# File 'lib/action_dispatch/routing/route_set.rb', line 157 def length routes.length end |
#names ⇒ Object
153 154 155 |
# File 'lib/action_dispatch/routing/route_set.rb', line 153 def names routes.keys end |
#route_defined?(name) ⇒ Boolean
81 82 83 84 |
# File 'lib/action_dispatch/routing/route_set.rb', line 81 def route_defined?(name) key = name.to_sym @path_helpers.include?(key) || @url_helpers.include?(key) end |