Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
张重言
rails
提交
51278579
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,发现更多精彩内容 >>
提交
51278579
编写于
10月 10, 2014
作者:
A
Aaron Patterson
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #17014 from grosser/grosser/fast-fixtures
speed up fixtures by not loading all their classes
上级
64e64c6f
336783ad
变更
3
显示空白变更内容
内联
并排
Showing
3 changed file
with
2 addition
and
66 deletion
+2
-66
activerecord/lib/active_record/fixtures.rb
activerecord/lib/active_record/fixtures.rb
+2
-34
activerecord/test/cases/fixtures_test.rb
activerecord/test/cases/fixtures_test.rb
+0
-19
activerecord/test/cases/helper.rb
activerecord/test/cases/helper.rb
+0
-13
未找到文件。
activerecord/lib/active_record/fixtures.rb
浏览文件 @
51278579
...
...
@@ -870,34 +870,9 @@ def fixtures(*fixture_set_names)
end
self
.
fixture_table_names
|=
fixture_set_names
require_fixture_classes
(
fixture_set_names
,
self
.
config
)
setup_fixture_accessors
(
fixture_set_names
)
end
def
try_to_load_dependency
(
file_name
)
require_dependency
file_name
rescue
LoadError
=>
e
unless
fixture_class_names
.
key?
(
file_name
.
pluralize
)
if
ActiveRecord
::
Base
.
logger
ActiveRecord
::
Base
.
logger
.
warn
(
"Unable to load
#{
file_name
}
, make sure you added it to ActiveSupport::TestCase.set_fixture_class"
)
ActiveRecord
::
Base
.
logger
.
warn
(
"underlying cause
#{
e
.
message
}
\n\n
#{
e
.
backtrace
.
join
(
"
\n
"
)
}
"
)
end
end
end
def
require_fixture_classes
(
fixture_set_names
=
nil
,
config
=
ActiveRecord
::
Base
)
if
fixture_set_names
fixture_set_names
=
fixture_set_names
.
map
{
|
n
|
n
.
to_s
}
else
fixture_set_names
=
fixture_table_names
end
fixture_set_names
.
each
do
|
file_name
|
file_name
=
file_name
.
singularize
if
config
.
pluralize_table_names
try_to_load_dependency
(
file_name
)
end
end
def
setup_fixture_accessors
(
fixture_set_names
=
nil
)
fixture_set_names
=
Array
(
fixture_set_names
||
fixture_table_names
)
methods
=
Module
.
new
do
...
...
@@ -974,7 +949,7 @@ def setup_fixtures(config = ActiveRecord::Base)
end
# Instantiate fixtures for every test if requested.
instantiate_fixtures
(
config
)
if
use_instantiated_fixtures
instantiate_fixtures
if
use_instantiated_fixtures
end
def
teardown_fixtures
...
...
@@ -1001,16 +976,9 @@ def load_fixtures(config)
Hash
[
fixtures
.
map
{
|
f
|
[
f
.
name
,
f
]
}]
end
# for pre_loaded_fixtures, only require the classes once. huge speed improvement
@@required_fixture_classes
=
false
def
instantiate_fixtures
(
config
)
def
instantiate_fixtures
if
pre_loaded_fixtures
raise
RuntimeError
,
'Load fixtures before instantiating them.'
if
ActiveRecord
::
FixtureSet
.
all_loaded_fixtures
.
empty?
unless
@@required_fixture_classes
self
.
class
.
require_fixture_classes
ActiveRecord
::
FixtureSet
.
all_loaded_fixtures
.
keys
,
config
@@required_fixture_classes
=
true
end
ActiveRecord
::
FixtureSet
.
instantiate_all_loaded_fixtures
(
self
,
load_instances?
)
else
raise
RuntimeError
,
'Load fixtures before instantiating them.'
if
@loaded_fixtures
.
nil?
...
...
activerecord/test/cases/fixtures_test.rb
浏览文件 @
51278579
...
...
@@ -822,25 +822,6 @@ def test_foo
end
end
class
FixtureLoadingTest
<
ActiveRecord
::
TestCase
def
test_logs_message_for_failed_dependency_load
ActiveRecord
::
Base
.
logger
.
expects
(
:warn
).
twice
ActiveRecord
::
TestCase
.
try_to_load_dependency
(
'does_not_exist'
)
end
def
test_does_not_logs_message_for_dependency_that_has_been_defined_with_set_fixture_class
ActiveRecord
::
TestCase
.
set_fixture_class
unknown_dead_parrots:
DeadParrot
ActiveRecord
::
Base
.
logger
.
expects
(
:warn
).
never
ActiveRecord
::
TestCase
.
try_to_load_dependency
(
'unknown_dead_parrot'
)
end
def
test_does_not_logs_message_for_successful_dependency_load
ActiveRecord
::
TestCase
.
expects
(
:require_dependency
).
with
(
'works_out_fine'
)
ActiveRecord
::
Base
.
logger
.
expects
(
:warn
).
never
ActiveRecord
::
TestCase
.
try_to_load_dependency
(
'works_out_fine'
)
end
end
class
CustomNameForFixtureOrModelTest
<
ActiveRecord
::
TestCase
ActiveRecord
::
FixtureSet
.
reset_cache
...
...
activerecord/test/cases/helper.rb
浏览文件 @
51278579
...
...
@@ -136,19 +136,6 @@ def disable_extension!(extension, connection)
connection
.
reconnect!
end
unless
ENV
[
'FIXTURE_DEBUG'
]
module
ActiveRecord::TestFixtures::ClassMethods
def
try_to_load_dependency_with_silence
(
*
args
)
old
=
ActiveRecord
::
Base
.
logger
.
level
ActiveRecord
::
Base
.
logger
.
level
=
ActiveSupport
::
Logger
::
ERROR
try_to_load_dependency_without_silence
(
*
args
)
ActiveRecord
::
Base
.
logger
.
level
=
old
end
alias_method_chain
:try_to_load_dependency
,
:silence
end
end
require
"cases/validations_repair_helper"
class
ActiveSupport::TestCase
include
ActiveRecord
::
TestFixtures
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录