Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
张重言
rails
提交
cd3983a9
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,发现更多精彩内容 >>
提交
cd3983a9
编写于
8月 11, 2015
作者:
Y
Yves Senn
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #17885 from starbelly/patch-1
Add method to run command-line db apps Conflicts: activerecord/CHANGELOG.md
上级
f51d1428
07f8a96a
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
31 addition
and
14 deletion
+31
-14
activerecord/CHANGELOG.md
activerecord/CHANGELOG.md
+5
-0
activerecord/lib/active_record/tasks/postgresql_database_tasks.rb
...cord/lib/active_record/tasks/postgresql_database_tasks.rb
+20
-8
activerecord/test/cases/tasks/postgresql_rake_test.rb
activerecord/test/cases/tasks/postgresql_rake_test.rb
+6
-6
未找到文件。
activerecord/CHANGELOG.md
浏览文件 @
cd3983a9
*
`ActiveRecord::Tasks::PostgreSQLDatabaseTasks`
fail if shellout to
postgresql commands (like
`pg_dump`
) is not successful.
*Bryan Paxton*, *Nate Berkopec*
*
Add
`ActiveRecord::Relation#in_batches`
to work with records and relations
in batches.
...
...
activerecord/lib/active_record/tasks/postgresql_database_tasks.rb
浏览文件 @
cd3983a9
require
'shellwords'
module
ActiveRecord
module
Tasks
# :nodoc:
class
PostgreSQLDatabaseTasks
# :nodoc:
...
...
@@ -55,19 +53,22 @@ def structure_dump(filename)
when
String
ActiveRecord
::
Base
.
dump_schemas
end
args
=
[
'-i'
,
'-s'
,
'-x'
,
'-O'
,
'-f'
,
filename
]
unless
search_path
.
blank?
search_path
=
search_path
.
split
(
","
).
map
{
|
search_path_part
|
"--schema=
#{
Shellwords
.
escape
(
search_path_part
.
strip
)
}
"
}.
join
(
" "
)
args
<<
search_path
.
split
(
','
).
map
do
|
part
|
"--schema=
#{
part
.
strip
}
"
end
.
join
(
' '
)
end
command
=
"pg_dump -i -s -x -O -f
#{
Shellwords
.
escape
(
filename
)
}
#{
search_path
}
#{
Shellwords
.
escape
(
configuration
[
'database'
])
}
"
raise
'Error dumping database'
unless
Kernel
.
system
(
command
)
args
<<
configuration
[
'database'
]
run_cmd
(
'pg_dump'
,
args
,
'dumping'
)
File
.
open
(
filename
,
"a"
)
{
|
f
|
f
<<
"SET search_path TO
#{
connection
.
schema_search_path
}
;
\n\n
"
}
end
def
structure_load
(
filename
)
set_psql_env
Kernel
.
system
(
"psql -X -q -f
#{
Shellwords
.
escape
(
filename
)
}
#{
configuration
[
'database'
]
}
"
)
args
=
[
'-q'
,
'-f'
,
filename
,
configuration
[
'database'
]
]
run_cmd
(
'psql'
,
args
,
'loading'
)
end
private
...
...
@@ -93,6 +94,17 @@ def set_psql_env
ENV
[
'PGPASSWORD'
]
=
configuration
[
'password'
].
to_s
if
configuration
[
'password'
]
ENV
[
'PGUSER'
]
=
configuration
[
'username'
].
to_s
if
configuration
[
'username'
]
end
def
run_cmd
(
cmd
,
args
,
action
)
fail
run_cmd_error
(
cmd
,
args
,
action
)
unless
Kernel
.
system
(
cmd
,
*
args
)
end
def
run_cmd_error
(
cmd
,
args
,
action
)
msg
=
"failed to execute:
\n
"
msg
<<
"
#{
cmd
}
#{
args
.
join
(
' '
)
}
\n\n
"
msg
<<
"Please check the output above for any errors and make sure that `
#{
cmd
}
` is installed in your PATH and has proper permissions.
\n\n
"
msg
end
end
end
end
activerecord/test/cases/tasks/postgresql_rake_test.rb
浏览文件 @
cd3983a9
...
...
@@ -204,7 +204,7 @@ def setup
end
def
test_structure_dump
Kernel
.
expects
(
:system
).
with
(
"pg_dump -i -s -x -O -f
#{
@filename
}
my-app-db"
).
returns
(
true
)
Kernel
.
expects
(
:system
).
with
(
'pg_dump'
,
'-i'
,
'-s'
,
'-x'
,
'-O'
,
'-f'
,
@filename
,
'my-app-db'
).
returns
(
true
)
ActiveRecord
::
Tasks
::
DatabaseTasks
.
structure_dump
(
@configuration
,
@filename
)
end
...
...
@@ -212,7 +212,7 @@ def test_structure_dump
def
test_structure_dump_with_schema_search_path
@configuration
[
'schema_search_path'
]
=
'foo,bar'
Kernel
.
expects
(
:system
).
with
(
"pg_dump -i -s -x -O -f
#{
@filename
}
--schema=foo --schema=bar my-app-db"
).
returns
(
true
)
Kernel
.
expects
(
:system
).
with
(
'pg_dump'
,
'-i'
,
'-s'
,
'-x'
,
'-O'
,
'-f'
,
@filename
,
'--schema=foo --schema=bar'
,
'my-app-db'
).
returns
(
true
)
ActiveRecord
::
Tasks
::
DatabaseTasks
.
structure_dump
(
@configuration
,
@filename
)
end
...
...
@@ -220,7 +220,7 @@ def test_structure_dump_with_schema_search_path
def
test_structure_dump_with_schema_search_path_and_dump_schemas_all
@configuration
[
'schema_search_path'
]
=
'foo,bar'
Kernel
.
expects
(
:system
).
with
(
"pg_dump
-i -s -x -O -f
#{
@filename
}
my-app-db"
).
returns
(
true
)
Kernel
.
expects
(
:system
).
with
(
"pg_dump
"
,
'-i'
,
'-s'
,
'-x'
,
'-O'
,
'-f'
,
@filename
,
'my-app-db'
).
returns
(
true
)
with_dump_schemas
(
:all
)
do
ActiveRecord
::
Tasks
::
DatabaseTasks
.
structure_dump
(
@configuration
,
@filename
)
...
...
@@ -228,7 +228,7 @@ def test_structure_dump_with_schema_search_path_and_dump_schemas_all
end
def
test_structure_dump_with_dump_schemas_string
Kernel
.
expects
(
:system
).
with
(
"pg_dump
-i -s -x -O -f
#{
@filename
}
--schema=foo --schema=bar
my-app-db"
).
returns
(
true
)
Kernel
.
expects
(
:system
).
with
(
"pg_dump
"
,
'-i'
,
'-s'
,
'-x'
,
'-O'
,
'-f'
,
@filename
,
'--schema=foo --schema=bar'
,
"
my-app-db"
).
returns
(
true
)
with_dump_schemas
(
'foo,bar'
)
do
ActiveRecord
::
Tasks
::
DatabaseTasks
.
structure_dump
(
@configuration
,
@filename
)
...
...
@@ -261,14 +261,14 @@ def setup
def
test_structure_load
filename
=
"awesome-file.sql"
Kernel
.
expects
(
:system
).
with
(
"psql -X -q -f
#{
filename
}
my-app-db"
)
Kernel
.
expects
(
:system
).
with
(
'psql'
,
'-q'
,
'-f'
,
filename
,
@configuration
[
'database'
]).
returns
(
true
)
ActiveRecord
::
Tasks
::
DatabaseTasks
.
structure_load
(
@configuration
,
filename
)
end
def
test_structure_load_accepts_path_with_spaces
filename
=
"awesome file.sql"
Kernel
.
expects
(
:system
).
with
(
"psql -X -q -f awesome
\\
file.sql my-app-db"
)
Kernel
.
expects
(
:system
).
with
(
'psql'
,
'-q'
,
'-f'
,
filename
,
@configuration
[
'database'
]).
returns
(
true
)
ActiveRecord
::
Tasks
::
DatabaseTasks
.
structure_load
(
@configuration
,
filename
)
end
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录