Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
张重言
rails
提交
805369c8
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,发现更多精彩内容 >>
提交
805369c8
编写于
6月 18, 2009
作者:
Y
Yehuda Katz + Carl Lerche
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Starting to write the new initializer
上级
1b844e4b
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
118 addition
and
0 deletion
+118
-0
railties/test/new_initializer_test.rb
railties/test/new_initializer_test.rb
+118
-0
未找到文件。
railties/test/new_initializer_test.rb
0 → 100644
浏览文件 @
805369c8
require
'abstract_unit'
require
'active_support/ruby/shim'
module
Rails
class
Initializer
class
Error
<
StandardError
;
end
class
Runner
def
initialize
@names
=
{}
@initializers
=
[]
end
def
add
(
name
,
options
=
{},
&
block
)
if
other
=
options
[
:before
]
||
options
[
:after
]
and
!
@names
[
other
]
raise
Error
,
"The
#{
other
.
inspect
}
initializer does not exist"
end
Class
.
new
(
Initializer
,
&
block
).
new
.
tap
do
|
initializer
|
index
=
if
options
[
:before
]
@initializers
.
index
(
@names
[
other
])
elsif
options
[
:after
]
@initializers
.
index
(
@names
[
other
])
+
1
else
-
1
end
@initializers
.
insert
(
index
,
initializer
)
@names
[
name
]
=
initializer
end
end
def
run
@initializers
.
each
{
|
init
|
init
.
run
}
end
end
def
self
.
run
(
&
blk
)
define_method
(
:run
,
&
blk
)
end
end
end
class
InitializerRunnerTest
<
ActiveSupport
::
TestCase
def
setup
@runner
=
Rails
::
Initializer
::
Runner
.
new
end
test
"A new runner can be created"
do
assert
@runner
end
test
"You can create initializers"
do
init
=
@runner
.
add
:foo
do
end
assert_kind_of
Rails
::
Initializer
,
init
end
test
"The initializers actually get run when the runner is run"
do
state
=
nil
@runner
.
add
:foo
do
run
{
state
=
true
}
end
@runner
.
run
assert
state
end
test
"By default, initializers get run in the order that they are added"
do
state
=
[]
@runner
.
add
:first
do
run
{
state
<<
:first
}
end
@runner
.
add
:second
do
run
{
state
<<
:second
}
end
@runner
.
run
assert_equal
[
:first
,
:second
],
state
end
test
"Raises an exception if :before or :after are specified, but don't exist"
do
assert_raise
(
Rails
::
Initializer
::
Error
)
do
@runner
.
add
(
:fail
,
:before
=>
:whale
)
{
1
}
end
assert_raise
(
Rails
::
Initializer
::
Error
)
do
@runner
.
add
(
:fail
,
:after
=>
:whale
)
{
1
}
end
end
test
"When adding an initializer, specifying :after allows you to move an initializer after another"
do
state
=
[]
@runner
.
add
:first
do
run
{
state
<<
:first
}
end
@runner
.
add
:second
do
run
{
state
<<
:second
}
end
@runner
.
add
:third
,
:after
=>
:first
do
run
{
state
<<
:third
}
end
@runner
.
run
assert_equal
[
:first
,
:third
,
:second
],
state
end
end
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录