Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
张重言
rails
提交
0d5b50ee
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,发现更多精彩内容 >>
提交
0d5b50ee
编写于
3月 19, 2009
作者:
J
Jeremy Kemper
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
pluginize concurrent block body part
上级
6335f5d5
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
2 addition
and
107 deletion
+2
-107
actionpack/lib/action_view/base.rb
actionpack/lib/action_view/base.rb
+2
-2
actionpack/lib/action_view/body_parts/concurrent_block.rb
actionpack/lib/action_view/body_parts/concurrent_block.rb
+0
-25
actionpack/test/template/body_parts_test.rb
actionpack/test/template/body_parts_test.rb
+0
-80
未找到文件。
actionpack/lib/action_view/base.rb
浏览文件 @
0d5b50ee
...
...
@@ -288,12 +288,12 @@ def template_format
# Access the current template being rendered.
# Returns a ActionView::Template object.
def
template
Thread
.
current
[
:_current_render
]
@_current_render
end
def
template
=
(
template
)
#:nodoc:
@_first_render
||=
template
Thread
.
current
[
:_current_render
]
=
template
@_current_render
=
template
end
def
with_template
(
current_template
)
...
...
actionpack/lib/action_view/body_parts/concurrent_block.rb
已删除
100644 → 0
浏览文件 @
6335f5d5
module
ActionView
module
BodyParts
class
ConcurrentBlock
def
initialize
(
&
block
)
@block
=
block
@body
=
[]
start
end
def
to_s
finish
@body
.
join
end
protected
def
start
@worker
=
Thread
.
new
{
@block
.
call
(
@body
)
}
end
def
finish
@worker
.
join
if
@worker
&&
@worker
.
alive?
end
end
end
end
actionpack/test/template/body_parts_test.rb
浏览文件 @
0d5b50ee
require
'abstract_unit'
require
'action_view/body_parts/concurrent_block'
class
BodyPartsTest
<
ActionController
::
TestCase
RENDERINGS
=
[
Object
.
new
,
Object
.
new
,
Object
.
new
]
...
...
@@ -21,82 +20,3 @@ def test_body_parts
assert_equal
RENDERINGS
.
join
,
@response
.
body
end
end
class
ConcurrentBlockPartTest
<
ActionController
::
TestCase
class
TestController
<
ActionController
::
Base
def
index
append_thread_id
=
lambda
do
|
parts
|
parts
<<
Thread
.
current
.
object_id
parts
<<
'::'
parts
<<
Time
.
now
.
to_i
sleep
0.1
end
future_render
&
append_thread_id
response
.
body_parts
<<
'-'
future_render
&
append_thread_id
response
.
body_parts
<<
'-'
future_render
do
|
parts
|
parts
<<
ActionView
::
BodyParts
::
ConcurrentBlock
.
new
(
&
append_thread_id
)
parts
<<
'-'
parts
<<
ActionView
::
BodyParts
::
ConcurrentBlock
.
new
(
&
append_thread_id
)
end
@performed_render
=
true
end
def
future_render
(
&
block
)
response
.
template
.
punctuate_body!
ActionView
::
BodyParts
::
ConcurrentBlock
.
new
(
&
block
)
end
end
tests
TestController
def
test_concurrent_threaded_parts
get
:index
elapsed
=
Benchmark
.
ms
do
thread_ids
=
@response
.
body
.
split
(
'-'
).
map
{
|
part
|
part
.
split
(
'::'
).
first
.
to_i
}
assert_equal
thread_ids
.
size
,
thread_ids
.
uniq
.
size
end
assert
(
elapsed
-
100
).
abs
<
10
,
elapsed
end
end
class
OpenUriPartTest
<
ActionController
::
TestCase
class
OpenUriPart
<
ActionView
::
BodyParts
::
ConcurrentBlock
def
initialize
(
url
)
url
=
URI
::
Generic
===
url
?
url
:
URI
.
parse
(
url
)
super
()
{
|
body
|
body
<<
url
.
read
}
end
end
class
TestController
<
ActionController
::
Base
def
index
render_url
'http://localhost/foo'
render_url
'http://localhost/bar'
render_url
'http://localhost/baz'
@performed_render
=
true
end
def
render_url
(
url
)
url
=
URI
.
parse
(
url
)
def
url
.
read
;
sleep
0.1
;
path
end
response
.
template
.
punctuate_body!
OpenUriPart
.
new
(
url
)
end
end
tests
TestController
def
test_concurrent_open_uri_parts
get
:index
elapsed
=
Benchmark
.
ms
do
assert_equal
'/foo/bar/baz'
,
@response
.
body
end
assert
(
elapsed
-
100
).
abs
<
10
,
elapsed
end
end
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录