New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Master branch: Fixed generated whitespace in routes when using namespaced resource. #6450
Master branch: Fixed generated whitespace in routes when using namespaced resource. #6450
Conversation
@rafaelfranca I've updated the code as per your comments on #6449. Any feedback? It's not a particularly pretty implementation but I think it's efficient. Thanks. |
cc/ @josevalim @drogus |
route_config << "#{" " * (regular_class_path_length - index)}end\n" | ||
end | ||
|
||
route route_config[2..-1] |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Was tempted to put a comment on this line. route
prepends two spaces onto the front of the string that is passed, so we need to strip those spaces off. We could edit the initial loop to do this, but I couldn't think of a non-messy way to do it. Maybe route
shouldn't prepend the spaces?
Any further thoughts on this? Anything you'd like me to change? Thanks. |
Any update on this, @rafaelfranca? Thanks! |
Thanks for working on this, I poked around in the code and would like to see a slightly more abstracted solution. I took the liberty of playing with your solution and something like this would be more maintainable into the future: module Rails
module Generators
class ResourceRouteGenerator < NamedBase
def route_string
@route_string ||= ""
end
def write(str = '', indent = 0)
route_string << "#{" " * indent}#{str}\n"
end
def route_length
regular_class_path.length
end
# 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?
# 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 + 2)
# 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
end
end
end You'll want to verify the whitespace calculations on this still work out and maybe modify your tests. When you're done you'll need to squash to one commit. I can help you out with any of that if you have questions/problems. If you're not interested in working on this anymore let me know and i'll put this in a new PR. Either way, thanks and let me know if you have questions. |
Great work. Thanks, @schneems. I'm just off to bed, but I'll take a look tomorrow morning and put a squashed commit together, with some updated tests. Cheers! |
I've updated this as per @schneems suggestions. Anything stopping this from getting pulled now? Thanks! /cc @rafaelfranca, @drogus |
👍 looks good to me. |
Master branch: Fixed generated whitespace in routes when using namespaced resource.
Merged thanks |
Thanks @rafaelfranca - I appreciate it. |
Do you need a 3-2 backport? |
This pull request broke the build. Please fix it. https://travis-ci.org/#!/rails/rails/jobs/2615327 |
After the railties tests green at the master branch I will backport. I can fix the tests but I don't have time right now. |
@rafaelfranca should be fixed now, feel free to backport. |
You probably need to pull #7811 too. Sorry! |
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)
Done at a02f67b |
A version of #6449 on the master branch.
Currently, running rails generate resource admin/blog_post gives the following:
This patch fixes the whitespace, so it's generated as follows:
It's something that's been bugging me for ages, so I figured it was worth fixing.
All feedback welcome. Thanks guys!