Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
张重言
rails
提交
346ccf37
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,发现更多精彩内容 >>
提交
346ccf37
编写于
9月 26, 2012
作者:
D
Dmitry Vorotilin
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Kernel#capture replaced by version which can catch output from subprocesses
上级
c7e233ce
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
29 addition
and
11 deletion
+29
-11
activesupport/CHANGELOG.md
activesupport/CHANGELOG.md
+1
-0
activesupport/lib/active_support/core_ext/kernel/reporting.rb
...vesupport/lib/active_support/core_ext/kernel/reporting.rb
+26
-11
activesupport/test/core_ext/kernel_test.rb
activesupport/test/core_ext/kernel_test.rb
+2
-0
未找到文件。
activesupport/CHANGELOG.md
浏览文件 @
346ccf37
## Rails 4.0.0 (unreleased) ##
*
Kernel#capture can catch output from subprocesses
*Dmitry Vorotilin*
*
Make callstack attribute optional in
ActiveSupport::Deprecation::Reporting methods
`warn`
and
`deprecation_warning`
...
...
activesupport/lib/active_support/core_ext/kernel/reporting.rb
浏览文件 @
346ccf37
require
'rbconfig'
require
'tempfile'
module
Kernel
# Sets $VERBOSE to nil for the duration of the block and back to its original
...
...
@@ -66,19 +67,33 @@ def suppress(*exception_classes)
# Captures the given stream and returns it:
#
# stream = capture(:stdout) { puts 'Cool' }
# stream # => "Cool\n"
# stream = capture(:stdout) { puts 'notice' }
# stream # => "notice\n"
#
# stream = capture(:stderr) { warn 'error' }
# stream # => "error\n"
#
# even for subprocesses:
#
# stream = capture(:stdout) { system('echo notice') }
# stream # => "notice\n"
#
# stream = capture(:stderr) { system('echo error 1>&2') }
# stream # => "error\n"
def
capture
(
stream
)
begin
stream
=
stream
.
to_s
eval
"$
#{
stream
}
= StringIO.new"
yield
result
=
eval
(
"$
#{
stream
}
"
).
string
ensure
eval
(
"$
#{
stream
}
=
#{
stream
.
upcase
}
"
)
end
stream
=
stream
.
to_s
captured_stream
=
Tempfile
.
new
(
stream
)
stream_io
=
eval
(
"$
#{
stream
}
"
)
origin_stream
=
stream_io
.
dup
stream_io
.
reopen
(
captured_stream
)
yield
result
stream_io
.
rewind
return
captured_stream
.
read
ensure
captured_stream
.
unlink
stream_io
.
reopen
(
origin_stream
)
end
alias
:silence
:capture
...
...
activesupport/test/core_ext/kernel_test.rb
浏览文件 @
346ccf37
...
...
@@ -51,6 +51,8 @@ class << o; @x = 1; end
def
test_capture
assert_equal
'STDERR'
,
capture
(
:stderr
)
{
$stderr
.
print
'STDERR'
}
assert_equal
'STDOUT'
,
capture
(
:stdout
)
{
print
'STDOUT'
}
assert_equal
"STDERR
\n
"
,
capture
(
:stderr
)
{
system
(
'echo STDERR 1>&2'
)
}
assert_equal
"STDOUT
\n
"
,
capture
(
:stdout
)
{
system
(
'echo STDOUT'
)
}
end
end
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录