提交 cdad483d 编写于 作者: F Fred Wu 提交者: José Valim

Improved how AppGenerator generates the application name. It now detects the...

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: NJosé Valim <jose.valim@gmail.com>
上级 aeaab06c
......@@ -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
......
......@@ -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!/
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册