aboutsummaryrefslogtreecommitdiffstats
path: root/actionpack
diff options
context:
space:
mode:
authorGodfrey Chan <godfreykfc@gmail.com>2014-11-23 01:46:51 -0800
committerGodfrey Chan <godfreykfc@gmail.com>2014-11-23 01:46:51 -0800
commit23b21f6182e36c05c6b2a240c0fb824ae828465e (patch)
tree3f30ce54d3adfbb3642eb258de1eb9ace40cfd6a /actionpack
parent8e73abbda8d3a55459bac728530606fdf69468f5 (diff)
downloadrails-23b21f6182e36c05c6b2a240c0fb824ae828465e.tar.gz
rails-23b21f6182e36c05c6b2a240c0fb824ae828465e.tar.bz2
rails-23b21f6182e36c05c6b2a240c0fb824ae828465e.zip
Don't show the warning if we're already raising the error anyway
If the route set is empty, or if none of the routes matches with a score > 0, there is no point showing the deprecation message because we are already be raising the `ActionController::UrlGenerationError` mentioned in the warning. In this case it is the expected behavior and the user wouldn't have to take any actions.
Diffstat (limited to 'actionpack')
-rw-r--r--actionpack/lib/action_dispatch/journey/formatter.rb21
1 files changed, 13 insertions, 8 deletions
diff --git a/actionpack/lib/action_dispatch/journey/formatter.rb b/actionpack/lib/action_dispatch/journey/formatter.rb
index 62bd4a33f2..177f586c0e 100644
--- a/actionpack/lib/action_dispatch/journey/formatter.rb
+++ b/actionpack/lib/action_dispatch/journey/formatter.rb
@@ -81,14 +81,8 @@ module ActionDispatch
if named_routes.key?(name)
yield named_routes[name]
else
- if name
- ActiveSupport::Deprecation.warn <<-MSG.squish
- You are trying to generate the URL for a named route called
- #{name.inspect} but no such route was found. In the future,
- this will result in an `ActionController::UrlGenerationError`
- exception.
- MSG
- end
+ # Make sure we don't show the deprecation warning more than once
+ warned = false
routes = non_recursive(cache, options)
@@ -98,6 +92,17 @@ module ActionDispatch
break if score < 0
hash[score].sort_by { |i, _| i }.each do |_, route|
+ if name && !warned
+ ActiveSupport::Deprecation.warn <<-MSG.squish
+ You are trying to generate the URL for a named route called
+ #{name.inspect} but no such route was found. In the future,
+ this will result in an `ActionController::UrlGenerationError`
+ exception.
+ MSG
+
+ warned = true
+ end
+
yield route
end
end