From 607dbbaa7621551d4cdccbef5b53955b1171e108 Mon Sep 17 00:00:00 2001 From: Fred Wu Date: Wed, 28 Jul 2010 22:55:57 +1000 Subject: [PATCH] Improved how AppGenerator generates the application name. It now detects the current app name whenever possible. This means that renaming the residing directory will not effect the app name generated by AppGenerator. --- .../rails/generators/rails/app/app_generator.rb | 6 ++++- railties/test/generators/app_generator_test.rb | 24 ++++++++++++++++++++ 2 files changed, 29 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..241a50b 100644 --- a/railties/lib/rails/generators/rails/app/app_generator.rb +++ b/railties/lib/rails/generators/rails/app/app_generator.rb @@ -356,8 +356,12 @@ module Rails @app_name ||= File.basename(destination_root) end + def defined_app_const_base + Rails.application.class.name.sub(/::Application$/, "") if Rails.application.instance_of?(Rails::Application) + 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..adab63e 100644 --- a/railties/test/generators/app_generator_test.rb +++ b/railties/test/generators/app_generator_test.rb @@ -100,6 +100,30 @@ class AppGeneratorTest < Rails::Generators::TestCase assert_file "things-43/config/application.rb", /^module Things43$/ end + def test_application_name_is_detected_if_it_exists_and_app_folder_renamed + app_root = File.join(destination_root, "myapp") + app_moved_root = File.join(destination_root, "myapp_moved") + + run_generator [app_root] + + Rails.application.config.root = app_moved_root + Rails.application.class.stubs(:name).returns("Myapp") + Rails.application.stubs(:instance_of?).returns(Rails::Application) + + FileUtils.mv(app_root, app_moved_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_moved_root, :shell => shell + generator.send(:app_const) + silence(:stdout){ generator.send(:create_config_files) } + assert_file "myapp_moved/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