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
-
#routes ⇒ Object
readonly
Returns the value of attribute routes.
-
#url_helpers_module ⇒ Object
readonly
Returns the value of attribute url_helpers_module.
Instance Method Summary collapse
- #add(name, route) ⇒ Object (also: #[]=)
- #clear! ⇒ Object (also: #clear)
- #each ⇒ Object
- #get(name) ⇒ Object (also: #[])
- #helper_names ⇒ Object
- #helpers ⇒ Object
-
#initialize ⇒ NamedRouteCollection
constructor
A new instance of NamedRouteCollection.
- #key?(name) ⇒ Boolean
- #length ⇒ Object
- #names ⇒ Object
- #path_helpers_module(warn = false) ⇒ Object
- #route_defined?(name) ⇒ Boolean
Constructor Details
#initialize ⇒ NamedRouteCollection
Returns a new instance of NamedRouteCollection.
93 94 95 96 97 98 99 |
# File 'lib/action_dispatch/routing/route_set.rb', line 93 def initialize @routes = {} @path_helpers = Set.new @url_helpers = Set.new @url_helpers_module = Module.new @path_helpers_module = Module.new end |
Instance Attribute Details
#routes ⇒ Object (readonly)
Returns the value of attribute routes.
91 92 93 |
# File 'lib/action_dispatch/routing/route_set.rb', line 91 def routes @routes end |
#url_helpers_module ⇒ Object (readonly)
Returns the value of attribute url_helpers_module.
91 92 93 |
# File 'lib/action_dispatch/routing/route_set.rb', line 91 def url_helpers_module @url_helpers_module end |
Instance Method Details
#add(name, route) ⇒ Object Also known as: []=
132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 |
# File 'lib/action_dispatch/routing/route_set.rb', line 132 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, LEGACY define_url_helper @url_helpers_module, route, url_name, route.defaults, name, UNKNOWN @path_helpers << path_name @url_helpers << url_name end |
#clear! ⇒ Object Also known as: clear
118 119 120 121 122 123 124 125 126 127 128 129 130 |
# File 'lib/action_dispatch/routing/route_set.rb', line 118 def clear! @path_helpers.each do |helper| @path_helpers_module.send :undef_method, helper end @url_helpers.each do |helper| @url_helpers_module.send :undef_method, helper end @routes.clear @path_helpers.clear @url_helpers.clear end |
#each ⇒ Object
161 162 163 164 |
# File 'lib/action_dispatch/routing/route_set.rb', line 161 def each routes.each { |name, route| yield name, route } self end |
#get(name) ⇒ Object Also known as: []
149 150 151 |
# File 'lib/action_dispatch/routing/route_set.rb', line 149 def get(name) routes[name.to_sym] end |
#helper_names ⇒ Object
114 115 116 |
# File 'lib/action_dispatch/routing/route_set.rb', line 114 def helper_names @path_helpers.map(&:to_s) + @url_helpers.map(&:to_s) end |
#helpers ⇒ Object
106 107 108 109 110 111 112 |
# File 'lib/action_dispatch/routing/route_set.rb', line 106 def helpers ActiveSupport::Deprecation.warn(<<-MSG.squish) `named_routes.helpers` is deprecated, please use `route_defined?(route_name)` to see if a named route was defined. MSG @path_helpers + @url_helpers end |
#key?(name) ⇒ Boolean
153 154 155 |
# File 'lib/action_dispatch/routing/route_set.rb', line 153 def key?(name) routes.key? name.to_sym end |
#length ⇒ Object
170 171 172 |
# File 'lib/action_dispatch/routing/route_set.rb', line 170 def length routes.length end |
#names ⇒ Object
166 167 168 |
# File 'lib/action_dispatch/routing/route_set.rb', line 166 def names routes.keys end |
#path_helpers_module(warn = false) ⇒ Object
174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 |
# File 'lib/action_dispatch/routing/route_set.rb', line 174 def path_helpers_module(warn = false) if warn mod = @path_helpers_module helpers = @path_helpers Module.new do include mod helpers.each do |meth| define_method(meth) do |*args, &block| ActiveSupport::Deprecation.warn("The method `#{meth}` cannot be used here as a full URL is required. Use `#{meth.to_s.sub(/_path$/, '_url')}` instead") super(*args, &block) end end end else @path_helpers_module end end |
#route_defined?(name) ⇒ Boolean
101 102 103 104 |
# File 'lib/action_dispatch/routing/route_set.rb', line 101 def route_defined?(name) key = name.to_sym @path_helpers.include?(key) || @url_helpers.include?(key) end |