aboutsummaryrefslogtreecommitdiffstats
path: root/actionpack/lib/action_dispatch/routing/polymorphic_routes.rb
diff options
context:
space:
mode:
authoryury <yury.korolev@gmail.com>2010-08-24 23:31:48 +0400
committerJosé Valim <jose.valim@gmail.com>2010-08-28 17:54:50 -0300
commit3e22e0b0250e1386f68ebbdb7f23ae10888f5da6 (patch)
treea27dc1ddc5562c31589d2a1d219661ac6f16b794 /actionpack/lib/action_dispatch/routing/polymorphic_routes.rb
parentececa75c66e837e62d34b1aa4e82edf579325b9b (diff)
downloadrails-3e22e0b0250e1386f68ebbdb7f23ae10888f5da6.tar.gz
rails-3e22e0b0250e1386f68ebbdb7f23ae10888f5da6.tar.bz2
rails-3e22e0b0250e1386f68ebbdb7f23ae10888f5da6.zip
Micro optimization for build_named_route_call in PolymorphicRoutes:
1. use map instead of inject 2. use [].join("_") instead of '<<'. It is a little bit faster for ruby 1.9.2 and x2 faster for ruby 1.8.7. http://gist.github.com/548143 [#5450 state:resolved] Signed-off-by: José Valim <jose.valim@gmail.com>
Diffstat (limited to 'actionpack/lib/action_dispatch/routing/polymorphic_routes.rb')
-rw-r--r--actionpack/lib/action_dispatch/routing/polymorphic_routes.rb20
1 files changed, 10 insertions, 10 deletions
diff --git a/actionpack/lib/action_dispatch/routing/polymorphic_routes.rb b/actionpack/lib/action_dispatch/routing/polymorphic_routes.rb
index 31dba835ac..142cd08eac 100644
--- a/actionpack/lib/action_dispatch/routing/polymorphic_routes.rb
+++ b/actionpack/lib/action_dispatch/routing/polymorphic_routes.rb
@@ -148,29 +148,29 @@ module ActionDispatch
def build_named_route_call(records, inflection, options = {})
unless records.is_a?(Array)
record = extract_record(records)
- route = ''
+ route = []
else
record = records.pop
- route = records.inject("") do |string, parent|
+ route = records.map do |parent|
if parent.is_a?(Symbol) || parent.is_a?(String)
- string << "#{parent}_"
+ parent
else
- string << ActiveModel::Naming.plural(parent).singularize
- string << "_"
+ ActiveModel::Naming.plural(parent).singularize
end
end
end
if record.is_a?(Symbol) || record.is_a?(String)
- route << "#{record}_"
+ route << record
else
route << ActiveModel::Naming.plural(record)
- route = route.singularize if inflection == :singular
- route << "_"
- route << "index_" if ActiveModel::Naming.uncountable?(record) && inflection == :plural
+ route = [route.join("_").singularize] if inflection == :singular
+ route << "index" if ActiveModel::Naming.uncountable?(record) && inflection == :plural
end
- action_prefix(options) + route + routing_type(options).to_s
+ route << routing_type(options)
+
+ action_prefix(options) + route.join("_")
end
def extract_record(record_or_hash_or_array)