diff --git a/railties/CHANGELOG.md b/railties/CHANGELOG.md index 1d01c8d0e54cff5e60f9e7c0620a0a6f33ffdf19..d12a1f21f8814eb86e75497cd28f8760e00c2de3 100644 --- a/railties/CHANGELOG.md +++ b/railties/CHANGELOG.md @@ -1,3 +1,11 @@ +* Make the application name snake cased when it contains spaces + + The application name is used to fill the `database.yml` and + `session_store.rb` files ; previously, if the provided name + contained whitespaces, it led to unexpected names in these files. + + *Robin Dupret* + * Added `--model-name` option to `ScaffoldControllerGenerator`. *yalab* diff --git a/railties/lib/rails/generators/rails/app/app_generator.rb b/railties/lib/rails/generators/rails/app/app_generator.rb index 92c876c83519a4fe61693c1cf743e6ba5d5b0dd3..db6b11abfa590d3d106611b216964328788ae247 100644 --- a/railties/lib/rails/generators/rails/app/app_generator.rb +++ b/railties/lib/rails/generators/rails/app/app_generator.rb @@ -239,7 +239,7 @@ def file(*args, &block) end def app_name - @app_name ||= (defined_app_const_base? ? defined_app_name : File.basename(destination_root)).tr(".", "_") + @app_name ||= (defined_app_const_base? ? defined_app_name : File.basename(destination_root)).tr('\\', '').tr(". ", "_") end def defined_app_name diff --git a/railties/lib/rails/generators/testing/assertions.rb b/railties/lib/rails/generators/testing/assertions.rb index 6267b2f2ee187a1e01ed9e424c97b5416f9b72b4..cc88e830dd007a1d2638128a394973c8fe356d3e 100644 --- a/railties/lib/rails/generators/testing/assertions.rb +++ b/railties/lib/rails/generators/testing/assertions.rb @@ -21,7 +21,7 @@ module Assertions # end # end def assert_file(relative, *contents) - absolute = File.expand_path(relative, destination_root) + absolute = File.expand_path(relative, destination_root).shellescape assert File.exists?(absolute), "Expected file #{relative.inspect} to exist, but does not" read = File.read(absolute) if block_given? || !contents.empty? diff --git a/railties/test/generators/app_generator_test.rb b/railties/test/generators/app_generator_test.rb index 2f0dfc7d3ee7192bb9b60381e6ea65e99b2bc135..24f01c878c80d24eafd3737ac600c2ceefcf4e08 100644 --- a/railties/test/generators/app_generator_test.rb +++ b/railties/test/generators/app_generator_test.rb @@ -367,6 +367,16 @@ def test_pretend_option assert_no_match(/run bundle install/, output) end + def test_application_name_with_spaces + path = File.join(destination_root, "foo bar".shellescape) + + # This also applies to MySQL apps but not with SQLite + run_generator [path, "-d", 'postgresql'] + + assert_file "foo bar/config/database.yml", /database: foo_bar_development/ + assert_file "foo bar/config/initializers/session_store.rb", /key: '_foo_bar/ + end + protected def action(*args, &block)