Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
张重言
rails
提交
117bb541
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,体验更适合开发者的 AI 搜索 >>
提交
117bb541
编写于
5月 10, 2015
作者:
M
Mehmet Emin İNAÇ
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Refactor railties console and dbconsole commands
fix minor convention problems
上级
986fdc4e
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
103 addition
and
109 deletion
+103
-109
railties/lib/rails/commands/console.rb
railties/lib/rails/commands/console.rb
+6
-25
railties/lib/rails/commands/console_helper.rb
railties/lib/rails/commands/console_helper.rb
+34
-0
railties/lib/rails/commands/dbconsole.rb
railties/lib/rails/commands/dbconsole.rb
+59
-76
railties/test/commands/dbconsole_test.rb
railties/test/commands/dbconsole_test.rb
+4
-8
未找到文件。
railties/lib/rails/commands/console.rb
浏览文件 @
117bb541
require
'optparse'
require
'irb'
require
'irb/completion'
require
'rails/commands/console_helper'
module
Rails
class
Console
class
<<
self
def
start
(
*
args
)
new
(
*
args
).
start
end
include
ConsoleHelper
class
<<
self
def
parse_arguments
(
arguments
)
options
=
{}
...
...
@@ -21,23 +20,8 @@ def parse_arguments(arguments)
opt
.
parse!
(
arguments
)
end
if
arguments
.
first
&&
arguments
.
first
[
0
]
!=
'-'
env
=
arguments
.
first
if
available_environments
.
include?
env
options
[
:environment
]
=
env
else
options
[
:environment
]
=
%w(production development test)
.
detect
{
|
e
|
e
=~
/^
#{
env
}
/
}
||
env
end
end
options
set_options_env
(
arguments
,
options
)
end
private
def
available_environments
Dir
[
'config/environments/*.rb'
].
map
{
|
fname
|
File
.
basename
(
fname
,
'.*'
)
}
end
end
attr_reader
:options
,
:app
,
:console
...
...
@@ -57,12 +41,9 @@ def sandbox?
end
def
environment
options
[
:environment
]
||=
ENV
[
'RAILS_ENV'
]
||
ENV
[
'RACK_ENV'
]
||
'development'
end
def
environment?
environment
options
[
:environment
]
||=
super
end
alias_method
:environment?
,
:environment
def
set_environment!
Rails
.
env
=
environment
...
...
railties/lib/rails/commands/console_helper.rb
0 → 100644
浏览文件 @
117bb541
require
'active_support/concern'
module
Rails
module
ConsoleHelper
# :nodoc:
extend
ActiveSupport
::
Concern
module
ClassMethods
def
start
(
*
args
)
new
(
*
args
).
start
end
private
def
set_options_env
(
arguments
,
options
)
if
arguments
.
first
&&
arguments
.
first
[
0
]
!=
'-'
env
=
arguments
.
first
if
available_environments
.
include?
env
options
[
:environment
]
=
env
else
options
[
:environment
]
=
%w(production development test)
.
detect
{
|
e
|
e
=~
/^
#{
env
}
/
}
||
env
end
end
options
end
def
available_environments
Dir
[
'config/environments/*.rb'
].
map
{
|
fname
|
File
.
basename
(
fname
,
'.*'
)
}
end
end
def
environment
ENV
[
"RAILS_ENV"
]
||
ENV
[
"RACK_ENV"
]
||
"development"
end
end
end
\ No newline at end of file
railties/lib/rails/commands/dbconsole.rb
浏览文件 @
117bb541
require
'erb'
require
'yaml'
require
'optparse'
require
'rails/commands/console_helper'
module
Rails
class
DBConsole
include
ConsoleHelper
attr_reader
:arguments
def
self
.
start
new
.
start
class
<<
self
def
parse_arguments
(
arguments
)
options
=
{}
OptionParser
.
new
do
|
opt
|
opt
.
banner
=
"Usage: rails dbconsole [environment] [options]"
opt
.
on
(
"-p"
,
"--include-password"
,
"Automatically provide the password from database.yml"
)
do
|
v
|
options
[
'include_password'
]
=
true
end
opt
.
on
(
"--mode [MODE]"
,
[
'html'
,
'list'
,
'line'
,
'column'
],
"Automatically put the sqlite3 database in the specified mode (html, list, line, column)."
)
do
|
mode
|
options
[
'mode'
]
=
mode
end
opt
.
on
(
"--header"
)
do
|
h
|
options
[
'header'
]
=
h
end
opt
.
on
(
"-h"
,
"--help"
,
"Show this help message."
)
do
puts
opt
exit
end
opt
.
on
(
"-e"
,
"--environment=name"
,
String
,
"Specifies the environment to run this console under (test/development/production)."
,
"Default: development"
)
{
|
v
|
options
[
:environment
]
=
v
.
strip
}
opt
.
parse!
(
arguments
)
abort
opt
.
to_s
unless
(
0
..
1
).
include?
(
arguments
.
size
)
end
set_options_env
(
arguments
,
options
)
end
end
def
initialize
(
arguments
=
ARGV
)
...
...
@@ -15,7 +51,7 @@ def initialize(arguments = ARGV)
end
def
start
options
=
parse_arguments
(
arguments
)
options
=
self
.
class
.
parse_arguments
(
arguments
)
ENV
[
'RAILS_ENV'
]
=
options
[
:environment
]
||
environment
case
config
[
"adapter"
]
...
...
@@ -101,90 +137,37 @@ def config
end
def
environment
if
Rails
.
respond_to?
(
:env
)
Rails
.
env
else
ENV
[
"RAILS_ENV"
]
||
ENV
[
"RACK_ENV"
]
||
"development"
end
Rails
.
respond_to?
(
:env
)
?
Rails
.
env
:
super
end
protected
def
configurations
require
APP_PATH
ActiveRecord
::
Base
.
configurations
=
Rails
.
application
.
config
.
database_configuration
ActiveRecord
::
Base
.
configurations
end
def
configurations
require
APP_PATH
ActiveRecord
::
Base
.
configurations
=
Rails
.
application
.
config
.
database_configuration
ActiveRecord
::
Base
.
configurations
end
def
parse_arguments
(
arguments
)
options
=
{}
OptionParser
.
new
do
|
opt
|
opt
.
banner
=
"Usage: rails dbconsole [environment] [options]"
opt
.
on
(
"-p"
,
"--include-password"
,
"Automatically provide the password from database.yml"
)
do
|
v
|
options
[
'include_password'
]
=
true
end
def
find_cmd_and_exec
(
commands
,
*
args
)
commands
=
Array
(
commands
)
opt
.
on
(
"--mode [MODE]"
,
[
'html'
,
'list'
,
'line'
,
'column'
],
"Automatically put the sqlite3 database in the specified mode (html, list, line, column)."
)
do
|
mode
|
options
[
'mode'
]
=
mode
dirs_on_path
=
ENV
[
'PATH'
].
to_s
.
split
(
File
::
PATH_SEPARATOR
)
unless
(
ext
=
RbConfig
::
CONFIG
[
'EXEEXT'
]).
empty?
commands
=
commands
.
map
{
|
cmd
|
"
#{
cmd
}#{
ext
}
"
}
end
opt
.
on
(
"--header"
)
do
|
h
|
options
[
'header'
]
=
h
full_path_command
=
nil
found
=
commands
.
detect
do
|
cmd
|
dirs_on_path
.
detect
do
|
path
|
full_path_command
=
File
.
join
(
path
,
cmd
)
File
.
file?
(
full_path_command
)
&&
File
.
executable?
(
full_path_command
)
end
end
opt
.
on
(
"-h"
,
"--help"
,
"Show this help message."
)
do
puts
opt
exit
end
opt
.
on
(
"-e"
,
"--environment=name"
,
String
,
"Specifies the environment to run this console under (test/development/production)."
,
"Default: development"
)
{
|
v
|
options
[
:environment
]
=
v
.
strip
}
opt
.
parse!
(
arguments
)
abort
opt
.
to_s
unless
(
0
..
1
).
include?
(
arguments
.
size
)
end
if
arguments
.
first
&&
arguments
.
first
[
0
]
!=
'-'
env
=
arguments
.
first
if
available_environments
.
include?
env
options
[
:environment
]
=
env
if
found
exec
full_path_command
,
*
args
else
options
[
:environment
]
=
%w(production development test)
.
detect
{
|
e
|
e
=~
/^
#{
env
}
/
}
||
env
abort
(
"Couldn't find database client:
#{
commands
.
join
(
', '
)
}
. Check your $PATH and try again."
)
end
end
options
end
def
available_environments
Dir
[
'config/environments/*.rb'
].
map
{
|
fname
|
File
.
basename
(
fname
,
'.*'
)
}
end
def
find_cmd_and_exec
(
commands
,
*
args
)
commands
=
Array
(
commands
)
dirs_on_path
=
ENV
[
'PATH'
].
to_s
.
split
(
File
::
PATH_SEPARATOR
)
unless
(
ext
=
RbConfig
::
CONFIG
[
'EXEEXT'
]).
empty?
commands
=
commands
.
map
{
|
cmd
|
"
#{
cmd
}#{
ext
}
"
}
end
full_path_command
=
nil
found
=
commands
.
detect
do
|
cmd
|
dirs_on_path
.
detect
do
|
path
|
full_path_command
=
File
.
join
(
path
,
cmd
)
File
.
file?
(
full_path_command
)
&&
File
.
executable?
(
full_path_command
)
end
end
if
found
exec
full_path_command
,
*
args
else
abort
(
"Couldn't find database client:
#{
commands
.
join
(
', '
)
}
. Check your $PATH and try again."
)
end
end
end
end
railties/test/commands/dbconsole_test.rb
浏览文件 @
117bb541
...
...
@@ -99,19 +99,15 @@ def test_env
end
def
test_rails_env_is_development_when_argument_is_dev
dbconsole
=
Rails
::
DBConsole
.
new
dbconsole
.
stub
(
:available_environments
,
[
'development'
,
'test'
])
do
options
=
dbconsole
.
send
(
:parse_arguments
,
[
'dev'
])
Rails
::
DBConsole
.
stub
(
:available_environments
,
[
'development'
,
'test'
])
do
options
=
Rails
::
DBConsole
.
send
(
:parse_arguments
,
[
'dev'
])
assert_match
(
'development'
,
options
[
:environment
])
end
end
def
test_rails_env_is_dev_when_argument_is_dev_and_dev_env_is_present
dbconsole
=
Rails
::
DBConsole
.
new
dbconsole
.
stub
(
:available_environments
,
[
'dev'
])
do
options
=
dbconsole
.
send
(
:parse_arguments
,
[
'dev'
])
Rails
::
DBConsole
.
stub
(
:available_environments
,
[
'dev'
])
do
options
=
Rails
::
DBConsole
.
send
(
:parse_arguments
,
[
'dev'
])
assert_match
(
'dev'
,
options
[
:environment
])
end
end
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录