mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
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.
[#5225 state:resolved] Signed-off-by: José Valim <jose.valim@gmail.com>
This commit is contained in:
parent
aeaab06c79
commit
cdad483dff
2 changed files with 29 additions and 1 deletions
|
@ -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
|
||||
|
|
|
@ -106,6 +106,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!/
|
||||
|
|
Loading…
Reference in a new issue