diff options
author | Rafael Mendonça França <rafaelmfranca@gmail.com> | 2012-09-30 18:30:33 -0700 |
---|---|---|
committer | Rafael Mendonça França <rafaelmfranca@gmail.com> | 2012-10-01 10:11:47 -0300 |
commit | a02f67b39b0ca02a8dd871b75c9f2a9db3a40c7b (patch) | |
tree | 976829169203bdc653c451c089f36bd5a39a4b78 /railties/lib/rails | |
parent | 628e38d789176bf53822942598547dee21d5ce70 (diff) | |
download | rails-a02f67b39b0ca02a8dd871b75c9f2a9db3a40c7b.tar.gz rails-a02f67b39b0ca02a8dd871b75c9f2a9db3a40c7b.tar.bz2 rails-a02f67b39b0ca02a8dd871b75c9f2a9db3a40c7b.zip |
Merge pull request #6450 from iHiD/resource_generator_routes_master
Master branch: Fixed generated whitespace in routes when using namespaced resource.
Merge pull request #7811 from iHiD/resource_generator_routes_master
Fix the build (Broken scaffold routes test)
Diffstat (limited to 'railties/lib/rails')
-rw-r--r-- | railties/lib/rails/generators/rails/resource_route/resource_route_generator.rb | 45 |
1 files changed, 41 insertions, 4 deletions
diff --git a/railties/lib/rails/generators/rails/resource_route/resource_route_generator.rb b/railties/lib/rails/generators/rails/resource_route/resource_route_generator.rb index 6a5d62803c..f33d56b564 100644 --- a/railties/lib/rails/generators/rails/resource_route/resource_route_generator.rb +++ b/railties/lib/rails/generators/rails/resource_route/resource_route_generator.rb @@ -1,13 +1,50 @@ module Rails module Generators class ResourceRouteGenerator < NamedBase + + # Properly nests namespaces passed into a generator + # + # $ rails generate resource admin/users/products + # + # should give you + # + # namespace :admin do + # namespace :users + # resources :products + # end + # end def add_resource_route return if options[:actions].present? - route_config = regular_class_path.collect{ |namespace| "namespace :#{namespace} do " }.join(" ") - route_config << "resources :#{file_name.pluralize}" - route_config << " end" * regular_class_path.size - route route_config + + # iterates over all namespaces and opens up blocks + regular_class_path.each_with_index do |namespace, index| + write("namespace :#{namespace} do", index + 1) + end + + # inserts the primary resource + write("resources :#{file_name.pluralize}", route_length + 1) + + # ends blocks + regular_class_path.each_index do |index| + write("end", route_length - index) + end + + # route prepends two spaces onto the front of the string that is passed, this corrects that + route route_string[2..-1] end + + private + def route_string + @route_string ||= "" + end + + def write(str, indent) + route_string << "#{" " * indent}#{str}\n" + end + + def route_length + regular_class_path.length + end end end end |