Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
张重言
rails
提交
0f313fce
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 搜索 >>
提交
0f313fce
编写于
3月 28, 2013
作者:
K
kennyj
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Extract Sqlserver database tasks.
上级
4a370f9d
变更
5
隐藏空白更改
内联
并排
Showing
5 changed file
with
131 addition
and
11 deletion
+131
-11
activerecord/lib/active_record.rb
activerecord/lib/active_record.rb
+1
-0
activerecord/lib/active_record/railties/databases.rake
activerecord/lib/active_record/railties/databases.rake
+0
-10
activerecord/lib/active_record/tasks/database_tasks.rb
activerecord/lib/active_record/tasks/database_tasks.rb
+3
-1
activerecord/lib/active_record/tasks/sqlserver_database_tasks.rb
...ecord/lib/active_record/tasks/sqlserver_database_tasks.rb
+47
-0
activerecord/test/cases/tasks/sqlserver_rake_test.rb
activerecord/test/cases/tasks/sqlserver_rake_test.rb
+80
-0
未找到文件。
activerecord/lib/active_record.rb
浏览文件 @
0f313fce
...
...
@@ -145,6 +145,7 @@ module Tasks
'active_record/tasks/postgresql_database_tasks'
autoload
:FirebirdDatabaseTasks
,
'active_record/tasks/firebird_database_tasks'
autoload
:SqlserverDatabaseTasks
,
'active_record/tasks/sqlserver_database_tasks'
end
autoload
:TestCase
...
...
activerecord/lib/active_record/railties/databases.rake
浏览文件 @
0f313fce
...
...
@@ -278,8 +278,6 @@ db_namespace = namespace :db do
when
'oci'
,
'oracle'
ActiveRecord
::
Base
.
establish_connection
(
current_config
)
File
.
open
(
filename
,
"w:utf-8"
)
{
|
f
|
f
<<
ActiveRecord
::
Base
.
connection
.
structure_dump
}
when
'sqlserver'
`smoscript -s
#{
current_config
[
'host'
]
}
-d
#{
current_config
[
'database'
]
}
-u
#{
current_config
[
'username'
]
}
-p
#{
current_config
[
'password'
]
}
-f
#{
filename
}
-A -U`
else
ActiveRecord
::
Tasks
::
DatabaseTasks
.
structure_dump
(
current_config
,
filename
)
end
...
...
@@ -297,8 +295,6 @@ db_namespace = namespace :db do
current_config
=
ActiveRecord
::
Tasks
::
DatabaseTasks
.
current_config
filename
=
ENV
[
'DB_STRUCTURE'
]
||
File
.
join
(
Rails
.
root
,
"db"
,
"structure.sql"
)
case
current_config
[
'adapter'
]
when
'sqlserver'
`sqlcmd -S
#{
current_config
[
'host'
]
}
-d
#{
current_config
[
'database'
]
}
-U
#{
current_config
[
'username'
]
}
-P
#{
current_config
[
'password'
]
}
-i
#{
filename
}
`
when
'oci'
,
'oracle'
ActiveRecord
::
Base
.
establish_connection
(
current_config
)
IO
.
read
(
filename
).
split
(
";
\n\n
"
).
each
do
|
ddl
|
...
...
@@ -363,12 +359,6 @@ db_namespace = namespace :db do
task
:purge
=>
[
:environment
,
:load_config
]
do
abcs
=
ActiveRecord
::
Base
.
configurations
case
abcs
[
'test'
][
'adapter'
]
when
'sqlserver'
test
=
abcs
.
deep_dup
[
'test'
]
test_database
=
test
[
'database'
]
test
[
'database'
]
=
'master'
ActiveRecord
::
Base
.
establish_connection
(
test
)
ActiveRecord
::
Base
.
connection
.
recreate_database!
(
test_database
)
when
"oci"
,
"oracle"
ActiveRecord
::
Base
.
establish_connection
(
:test
)
ActiveRecord
::
Base
.
connection
.
structure_drop
.
split
(
";
\n\n
"
).
each
do
|
ddl
|
...
...
activerecord/lib/active_record/tasks/database_tasks.rb
浏览文件 @
0f313fce
...
...
@@ -18,7 +18,9 @@ def register_task(pattern, task)
register_task
(
/mysql/
,
ActiveRecord
::
Tasks
::
MySQLDatabaseTasks
)
register_task
(
/postgresql/
,
ActiveRecord
::
Tasks
::
PostgreSQLDatabaseTasks
)
register_task
(
/sqlite/
,
ActiveRecord
::
Tasks
::
SQLiteDatabaseTasks
)
register_task
(
/firebird/
,
ActiveRecord
::
Tasks
::
FirebirdDatabaseTasks
)
register_task
(
/firebird/
,
ActiveRecord
::
Tasks
::
FirebirdDatabaseTasks
)
register_task
(
/sqlserver/
,
ActiveRecord
::
Tasks
::
SqlserverDatabaseTasks
)
def
current_config
(
options
=
{})
options
.
reverse_merge!
:env
=>
Rails
.
env
...
...
activerecord/lib/active_record/tasks/sqlserver_database_tasks.rb
0 → 100644
浏览文件 @
0f313fce
require
'shellwords'
module
ActiveRecord
module
Tasks
# :nodoc:
class
SqlserverDatabaseTasks
# :nodoc:
delegate
:connection
,
:establish_connection
,
to:
ActiveRecord
::
Base
def
initialize
(
configuration
)
@configuration
=
configuration
end
def
create
$stderr
.
puts
'sorry, your database adapter is not supported yet, feel free to submit a patch'
end
def
drop
$stderr
.
puts
'sorry, your database adapter is not supported yet, feel free to submit a patch'
end
def
purge
test
=
configuration
.
deep_dup
test_database
=
test
[
'database'
]
test
[
'database'
]
=
'master'
establish_connection
(
test
)
connection
.
recreate_database!
(
test_database
)
end
def
charset
$stderr
.
puts
'sorry, your database adapter is not supported yet, feel free to submit a patch'
end
def
structure_dump
(
filename
)
Kernel
.
system
(
"smoscript -s
#{
configuration
[
'host'
]
}
-d
#{
configuration
[
'database'
]
}
-u
#{
configuration
[
'username'
]
}
-p
#{
configuration
[
'password'
]
}
-f
#{
filename
}
-A -U"
)
end
def
structure_load
(
filename
)
Kernel
.
system
(
"sqlcmd -S
#{
configuration
[
'host'
]
}
-d
#{
configuration
[
'database'
]
}
-U
#{
configuration
[
'username'
]
}
-P
#{
configuration
[
'password'
]
}
-i
#{
filename
}
"
)
end
private
def
configuration
@configuration
end
end
end
end
activerecord/test/cases/tasks/sqlserver_rake_test.rb
0 → 100644
浏览文件 @
0f313fce
require
'cases/helper'
module
ActiveRecord
module
SqlserverSetupper
def
setup
@database
=
'db.sqlserver'
@connection
=
stub
:connection
@configuration
=
{
'adapter'
=>
'sqlserver'
,
'database'
=>
@database
,
'host'
=>
'localhost'
,
'username'
=>
'username'
,
'password'
=>
'password'
,
}
ActiveRecord
::
Base
.
stubs
(
:connection
).
returns
(
@connection
)
ActiveRecord
::
Base
.
stubs
(
:establish_connection
).
returns
(
true
)
end
end
class
SqlserverDBCreateTest
<
ActiveRecord
::
TestCase
include
SqlserverSetupper
def
test_db_retrieves_create
message
=
capture
(
:stderr
)
do
ActiveRecord
::
Tasks
::
DatabaseTasks
.
create
@configuration
end
assert_match
(
/not supported/
,
message
)
end
end
class
SqlserverDBDropTest
<
ActiveRecord
::
TestCase
include
SqlserverSetupper
def
test_db_retrieves_drop
message
=
capture
(
:stderr
)
do
ActiveRecord
::
Tasks
::
DatabaseTasks
.
drop
@configuration
end
assert_match
(
/not supported/
,
message
)
end
end
class
SqlserverDBCharsetAndCollationTest
<
ActiveRecord
::
TestCase
include
SqlserverSetupper
def
test_db_retrieves_collation
assert_raise
NoMethodError
do
ActiveRecord
::
Tasks
::
DatabaseTasks
.
collation
@configuration
end
end
def
test_db_retrieves_charset
message
=
capture
(
:stderr
)
do
ActiveRecord
::
Tasks
::
DatabaseTasks
.
charset
@configuration
end
assert_match
(
/not supported/
,
message
)
end
end
class
SqlserverStructureDumpTest
<
ActiveRecord
::
TestCase
include
SqlserverSetupper
def
test_structure_dump
filename
=
"sqlserver.sql"
Kernel
.
expects
(
:system
).
with
(
"smoscript -s localhost -d
#{
@database
}
-u username -p password -f
#{
filename
}
-A -U"
)
ActiveRecord
::
Tasks
::
DatabaseTasks
.
structure_dump
(
@configuration
,
filename
)
end
end
class
SqlserverStructureLoadTest
<
ActiveRecord
::
TestCase
include
SqlserverSetupper
def
test_structure_load
filename
=
"sqlserver.sql"
Kernel
.
expects
(
:system
).
with
(
"sqlcmd -S localhost -d
#{
@database
}
-U username -P password -i
#{
filename
}
"
)
ActiveRecord
::
Tasks
::
DatabaseTasks
.
structure_load
(
@configuration
,
filename
)
end
end
end
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录