Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
张重言
rails
提交
5fe02881
R
rails
项目概览
张重言
/
rails
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
R
rails
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
5fe02881
编写于
8月 17, 2016
作者:
R
Rafael França
提交者:
GitHub
8月 17, 2016
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #26185 from y-yagi/refactor_commands_tasks
refactor `CommandsTasks`
上级
c1582589
6e95682b
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
132 addition
and
164 deletion
+132
-164
railties/lib/rails/commands/commands_tasks.rb
railties/lib/rails/commands/commands_tasks.rb
+35
-79
railties/lib/rails/commands/common_commands_tasks.rb
railties/lib/rails/commands/common_commands_tasks.rb
+68
-0
railties/lib/rails/commands/rake_proxy.rb
railties/lib/rails/commands/rake_proxy.rb
+1
-1
railties/lib/rails/engine/commands_tasks.rb
railties/lib/rails/engine/commands_tasks.rb
+28
-84
未找到文件。
railties/lib/rails/commands/commands_tasks.rb
浏览文件 @
5fe02881
require
"rails/commands/rake_proxy"
require
"rails/commands/common_commands_tasks"
require
"active_support/core_ext/string/strip"
module
Rails
# This is a class which takes in a rails command and initiates the appropriate
...
...
@@ -8,27 +10,10 @@ module Rails
# it before they are run.
class
CommandsTasks
# :nodoc:
include
Rails
::
RakeProxy
include
Rails
::
CommonCommandsTasks
attr_reader
:argv
HELP_MESSAGE
=
<<-
EOT
Usage: rails COMMAND [ARGS]
The most common rails commands are:
generate Generate new code (short-cut alias: "g")
console Start the Rails console (short-cut alias: "c")
server Start the Rails server (short-cut alias: "s")
test Run tests (short-cut alias: "t")
dbconsole Start a console for the database specified in config/database.yml
(short-cut alias: "db")
new Create a new Rails application. "rails new my_app" creates a
new application called MyApp in "./my_app"
All commands can be run with -h (or --help) for more information.
In addition to those commands, there are:
EOT
ADDITIONAL_COMMANDS
=
[
[
"destroy"
,
'Undo code generated with "generate" (short-cut alias: "d")'
],
[
"plugin new"
,
"Generates skeleton for developing a Rails plugin"
],
...
...
@@ -36,34 +21,14 @@ class CommandsTasks # :nodoc:
'Run a piece of code in the application environment (short-cut alias: "r")'
]
]
COMMAND_WHITELIST
=
%w(plugin generate destroy console server dbconsole runner new version help test)
def
initialize
(
argv
)
@argv
=
argv
end
def
run_command!
(
command
)
command
=
parse_command
(
command
)
if
COMMAND_WHITELIST
.
include?
(
command
)
send
(
command
)
else
run_rake_task
(
command
)
end
end
def
plugin
require_command!
(
"plugin"
)
end
def
generate
generate_or_destroy
(
:generate
)
end
def
destroy
generate_or_destroy
(
:destroy
)
end
def
console
require_command!
(
"console"
)
options
=
Rails
::
Console
.
parse_arguments
(
argv
)
...
...
@@ -91,10 +56,6 @@ def server
end
end
def
test
require_command!
(
"test"
)
end
def
dbconsole
require_command!
(
"dbconsole"
)
Rails
::
DBConsole
.
start
...
...
@@ -112,16 +73,6 @@ def new
end
end
def
version
argv
.
unshift
"--version"
require_command!
(
"application"
)
end
def
help
write_help_message
write_commands
ADDITIONAL_COMMANDS
+
formatted_rake_tasks
end
private
def
exit_with_initialization_warning!
...
...
@@ -134,17 +85,6 @@ def shift_argv!
argv
.
shift
if
argv
.
first
&&
argv
.
first
[
0
]
!=
"-"
end
def
require_command!
(
command
)
require
"rails/commands/
#{
command
}
"
end
def
generate_or_destroy
(
command
)
require
"rails/generators"
require_application_and_environment!
Rails
.
application
.
load_generators
require_command!
(
command
)
end
# Change to the application's path if there is no config.ru file in current directory.
# This allows us to run `rails server` from other directories, but still get
# the main config.ru and properly set the tmp directory.
...
...
@@ -152,29 +92,45 @@ def set_application_directory!
Dir
.
chdir
(
File
.
expand_path
(
"../../"
,
APP_PATH
))
unless
File
.
exist?
(
File
.
expand_path
(
"config.ru"
))
end
def
commands
ADDITIONAL_COMMANDS
+
formatted_rake_tasks
end
def
command_whitelist
%w(plugin generate destroy console server dbconsole runner new version help test)
end
def
help_message
<<-
EOT
.
strip_heredoc
Usage: rails COMMAND [ARGS]
The most common rails commands are:
generate Generate new code (short-cut alias: "g")
console Start the Rails console (short-cut alias: "c")
server Start the Rails server (short-cut alias: "s")
test Run tests (short-cut alias: "t")
dbconsole Start a console for the database specified in config/database.yml
(short-cut alias: "db")
new Create a new Rails application. "rails new my_app" creates a
new application called MyApp in "./my_app"
All commands can be run with -h (or --help) for more information.
In addition to those commands, there are:
EOT
end
def
require_application_and_environment!
require
APP_PATH
Rails
.
application
.
require_environment!
end
def
write_help_message
puts
HELP_MESSAGE
end
def
write_commands
(
commands
)
width
=
commands
.
map
{
|
name
,
_
|
name
.
size
}.
max
||
10
commands
.
each
{
|
command
|
printf
(
" %-
#{
width
}
s %s
\n
"
,
*
command
)
}
def
load_tasks
Rails
.
application
.
load_tasks
end
def
parse_command
(
command
)
case
command
when
"--version"
,
"-v"
"version"
when
"--help"
,
"-h"
"help"
else
command
end
def
load_generators
Rails
.
application
.
load_generators
end
end
end
railties/lib/rails/commands/common_commands_tasks.rb
0 → 100644
浏览文件 @
5fe02881
module
Rails
module
CommonCommandsTasks
# :nodoc:
def
run_command!
(
command
)
command
=
parse_command
(
command
)
if
command_whitelist
.
include?
(
command
)
send
(
command
)
else
run_rake_task
(
command
)
end
end
def
generate
generate_or_destroy
(
:generate
)
end
def
destroy
generate_or_destroy
(
:destroy
)
end
def
test
require_command!
(
"test"
)
end
def
version
argv
.
unshift
"--version"
require_command!
(
"application"
)
end
def
help
write_help_message
write_commands
(
commands
)
end
private
def
generate_or_destroy
(
command
)
require
"rails/generators"
require_application_and_environment!
load_generators
require_command!
(
command
)
end
def
require_command!
(
command
)
require
"rails/commands/
#{
command
}
"
end
def
write_help_message
puts
help_message
end
def
write_commands
(
commands
)
width
=
commands
.
map
{
|
name
,
_
|
name
.
size
}.
max
||
10
commands
.
each
{
|
command
|
printf
(
" %-
#{
width
}
s %s
\n
"
,
*
command
)
}
end
def
parse_command
(
command
)
case
command
when
"--version"
,
"-v"
"version"
when
"--help"
,
"-h"
"help"
else
command
end
end
end
end
railties/lib/rails/commands/rake_proxy.rb
浏览文件 @
5fe02881
...
...
@@ -26,7 +26,7 @@ def rake_tasks
Rake
::
TaskManager
.
record_task_metadata
=
true
Rake
.
application
.
instance_variable_set
(
:@name
,
"rails"
)
Rails
.
application
.
load_tasks
load_tasks
@rake_tasks
=
Rake
.
application
.
tasks
.
select
(
&
:comment
)
end
...
...
railties/lib/rails/engine/commands_tasks.rb
浏览文件 @
5fe02881
require
"rails/commands/rake_proxy"
require
"rails/commands/common_commands_tasks"
require
"active_support/core_ext/string/strip"
module
Rails
class
Engine
class
CommandsTasks
# :nodoc:
include
Rails
::
RakeProxy
include
Rails
::
CommonCommandsTasks
attr_reader
:argv
HELP_MESSAGE
=
<<-
EOT
Usage: rails COMMAND [ARGS]
The common Rails commands available for engines are:
generate Generate new code (short-cut alias: "g")
destroy Undo code generated with "generate" (short-cut alias: "d")
test Run tests (short-cut alias: "t")
All commands can be run with -h for more information.
If you want to run any commands that need to be run in context
of the application, like `rails server` or `rails console`,
you should do it from application's directory (typically test/dummy).
In addition to those commands, there are:
EOT
COMMAND_WHITELIST
=
%w(generate destroy version help test)
def
initialize
(
argv
)
@argv
=
argv
end
def
run_command!
(
command
)
command
=
parse_command
(
command
)
private
if
COMMAND_WHITELIST
.
include?
(
command
)
send
(
command
)
else
run_rake_task
(
command
)
def
commands
formatted_rake_tasks
end
end
def
generate
generate_or_destroy
(
:generate
)
end
def
command_whitelist
%w(generate destroy version help test
)
end
def
destroy
generate_or_destroy
(
:destroy
)
end
def
help_message
<<-
EOT
.
strip_heredoc
Usage: rails COMMAND [ARGS]
def
test
require_command!
(
"test"
)
end
The common Rails commands available for engines are:
generate Generate new code (short-cut alias: "g")
destroy Undo code generated with "generate" (short-cut alias: "d")
test Run tests (short-cut alias: "t")
def
version
argv
.
unshift
"--version"
require_command!
(
"application"
)
end
All commands can be run with -h for more information.
def
help
write_help_message
write_commands
(
formatted_rake_tasks
)
end
If you want to run any commands that need to be run in context
of the application, like `rails server` or `rails console`,
you should do it from application's directory (typically test/dummy).
private
In addition to those commands, there are:
EOT
end
def
require_
command!
(
command
)
require
"rails/commands/
#{
command
}
"
def
require_
application_and_environment!
require
ENGINE_PATH
end
def
generate_or_destroy
(
command
)
load_generators
require_command!
(
command
)
def
load_tasks
Rake
.
application
.
init
(
"rails"
)
Rake
.
application
.
load_rakefile
end
def
load_generators
require
"rails/generators"
require
ENGINE_PATH
engine
=
::
Rails
::
Engine
.
find
(
ENGINE_ROOT
)
Rails
::
Generators
.
namespace
=
engine
.
railtie_namespace
engine
.
load_generators
end
def
write_help_message
puts
HELP_MESSAGE
end
def
write_commands
(
commands
)
width
=
commands
.
map
{
|
name
,
_
|
name
.
size
}.
max
||
10
commands
.
each
{
|
command
|
printf
(
" %-
#{
width
}
s %s
\n
"
,
*
command
)
}
end
def
parse_command
(
command
)
case
command
when
"--version"
,
"-v"
"version"
when
"--help"
,
"-h"
"help"
else
command
end
end
def
rake_tasks
require_rake
return
@rake_tasks
if
defined?
(
@rake_tasks
)
load_generators
Rake
::
TaskManager
.
record_task_metadata
=
true
Rake
.
application
.
init
(
"rails"
)
Rake
.
application
.
load_rakefile
@rake_tasks
=
Rake
.
application
.
tasks
.
select
(
&
:comment
)
end
end
end
end
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录