From 15b31b63819d3da8d831cdb000377b409def94b8 Mon Sep 17 00:00:00 2001 From: Fred Wu Date: Wed, 28 Jul 2010 13:46:25 +1000 Subject: [PATCH] Fix for AppGenerator, where the application module name generated is incorrect under certain circumstances such as by running `rake rails:update:configs`. --- .../rails/generators/rails/app/app_generator.rb | 9 ++++++++- railties/test/generators/app_generator_test.rb | 16 ++++++++++++++++ 2 files changed, 24 insertions(+), 1 deletions(-) diff --git a/railties/lib/rails/generators/rails/app/app_generator.rb b/railties/lib/rails/generators/rails/app/app_generator.rb index 1324cc1..21dbb7f 100644 --- a/railties/lib/rails/generators/rails/app/app_generator.rb +++ b/railties/lib/rails/generators/rails/app/app_generator.rb @@ -356,8 +356,15 @@ module Rails @app_name ||= File.basename(destination_root) end + def defined_app_const_base + file = Rails.application.config.root.join('config', 'environment.rb') + if File.exists?(file) && matches = File.open(file, 'r').read.match(/(\w+)::Application\.initialize!/) + matches[1] + end + end + def app_const_base - @app_const_base ||= app_name.gsub(/\W/, '_').squeeze('_').camelize + @app_const_base ||= defined_app_const_base || app_name.gsub(/\W/, '_').squeeze('_').camelize end def app_const diff --git a/railties/test/generators/app_generator_test.rb b/railties/test/generators/app_generator_test.rb index 67a878e..2f757f4 100644 --- a/railties/test/generators/app_generator_test.rb +++ b/railties/test/generators/app_generator_test.rb @@ -100,6 +100,22 @@ class AppGeneratorTest < Rails::Generators::TestCase assert_file "things-43/config/application.rb", /^module Things43$/ end + def test_application_name_is_detected_if_it_exists + app_root = File.join(destination_root, "myapp") + run_generator [app_root] + Rails.application.config.root = app_root + + # forces the shell to automatically overwrite all files + Thor::Base.shell.send(:attr_accessor, :always_force) + shell = Thor::Base.shell.new + shell.send(:always_force=, true) + + generator = Rails::Generators::AppGenerator.new ["rails"], { :with_dispatchers => true }, + :destination_root => app_root, :shell => shell + silence(:stdout){ generator.invoke(:create_config_files) } + assert_file "myapp/config/environment.rb", /Myapp::Application\.initialize!/ + end + def test_application_names_are_not_singularized run_generator [File.join(destination_root, "hats")] assert_file "hats/config/environment.rb", /Hats::Application\.initialize!/ -- 1.6.4.2