Skip to content
Browse files

Improved how AppGenerator generates the application name. It now dete…

…cts the current app name whenever possible. This means that renaming the residing directory will not effect the app name generated by AppGenerator.

[#5225 state:resolved]

Signed-off-by: José Valim <jose.valim@gmail.com>
  • Loading branch information...
1 parent aeaab06 commit cdad483dff4fef1b640dc3c750719c325b252f89 @fredwu fredwu committed with josevalim Jul 28, 2010
View
6 railties/lib/rails/generators/rails/app/app_generator.rb
@@ -356,8 +356,12 @@ def app_name
@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
View
24 railties/test/generators/app_generator_test.rb
@@ -106,6 +106,30 @@ def test_invalid_application_name_is_fixed
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!/

0 comments on commit cdad483

Please sign in to comment.
Something went wrong with that request. Please try again.