diff options
author | yury <yury.korolev@gmail.com> | 2010-08-24 23:31:48 +0400 |
---|---|---|
committer | José Valim <jose.valim@gmail.com> | 2010-08-28 17:54:50 -0300 |
commit | 3e22e0b0250e1386f68ebbdb7f23ae10888f5da6 (patch) | |
tree | a27dc1ddc5562c31589d2a1d219661ac6f16b794 /actionpack | |
parent | ececa75c66e837e62d34b1aa4e82edf579325b9b (diff) | |
download | rails-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')
-rw-r--r-- | actionpack/lib/action_dispatch/routing/polymorphic_routes.rb | 20 |
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) |