1
0
Fork 0
mirror of https://github.com/rails/rails.git synced 2022-11-09 12:12:34 -05:00

Don't remove all line endings from routes.rb

When there is a single scaffold in the routes.rb with no other lines
then revoking/destroying it will create a routes.rb file with a syntax
error. This is because the sentinel for the Thor `route` action didn't
include the newline but the logged route code did.

The fix is to add the newline to the sentinel and remove it from the
the logged route code.

Fixes #15913.

Conflicts:
	railties/CHANGELOG.md
This commit is contained in:
Andrew White 2015-02-03 22:47:59 +00:00
parent 5084783903
commit bac812a7ef
3 changed files with 26 additions and 2 deletions

View file

@ -1,3 +1,9 @@
* Don't remove all line endings from routes.rb when revoking scaffold.
Fixes #15913.
*Andrew White*
* Fix scaffold generator with `--helper=false` option.
*Rafael Mendonça França*

View file

@ -219,10 +219,10 @@ module Rails
# route "root 'welcome#index'"
def route(routing_code)
log :route, routing_code
sentinel = /\.routes\.draw do\s*$/
sentinel = /\.routes\.draw do\s*\n/m
in_root do
inject_into_file 'config/routes.rb', "\n #{routing_code}", { after: sentinel, verbose: false }
inject_into_file 'config/routes.rb', " #{routing_code}", { after: sentinel, verbose: false }
end
end

View file

@ -235,6 +235,24 @@ class ScaffoldGeneratorTest < Rails::Generators::TestCase
assert_file "config/routes.rb", /\.routes\.draw do\s*\|map\|\s*$/
end
def test_scaffold_generator_on_revoke_does_not_mutilate_routes
run_generator
route_path = File.expand_path("config/routes.rb", destination_root)
content = File.read(route_path)
# Remove all of the comments and blank lines from the routes file
content.gsub!(/^ \#.*\n/, '')
content.gsub!(/^\n/, '')
File.open(route_path, "wb") { |file| file.write(content) }
assert_file "config/routes.rb", /\.routes\.draw do\n resources :product_lines\nend\n\z/
run_generator ["product_line"], :behavior => :revoke
assert_file "config/routes.rb", /\.routes\.draw do\nend\n\z/
end
def test_scaffold_generator_no_assets_with_switch_no_assets
run_generator [ "posts", "--no-assets" ]
assert_no_file "app/assets/stylesheets/scaffold.css"