提交 e88ea325 编写于 作者: J José Valim

Assert for valid application names. [#3556 status:resolved]

上级 6716e4bc
......@@ -53,8 +53,9 @@ def initialize(*args)
def create_root
self.destination_root = File.expand_path(app_path, destination_root)
empty_directory '.'
valid_app_const?
empty_directory '.'
set_default_accessors!
FileUtils.cd(destination_root)
end
......@@ -193,7 +194,14 @@ def app_name
end
def app_const
@app_const ||= "#{app_name.classify}::Application"
@app_const ||= "#{app_name.gsub(/\W/, '_').squeeze('_').classify}::Application"
end
def valid_app_const?
case app_const
when /^\d/
raise Error, "Invalid application name #{app_name}. Please give a name which does not start with numbers."
end
end
def app_secret
......
......@@ -53,6 +53,16 @@ def test_invalid_database_option_raises_an_error
assert_match /Invalid value for \-\-database option/, content
end
def test_invalid_application_name_raises_an_error
content = capture(:stderr){ Rails::Generators::AppGenerator.start [File.join(destination_root, "43-things")] }
assert_equal "Invalid application name 43-things. Please give a name which does not start with numbers.\n", content
end
def test_invalid_application_name_is_fixed
silence(:stdout){ Rails::Generators::AppGenerator.start [File.join(destination_root, "things-43")] }
assert_file "things-43/config/environment.rb", /Things43::Application/
end
def test_config_database_is_added_by_default
run_generator
assert_file "config/database.yml", /sqlite3/
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册