Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
张重言
rails
提交
71a84206
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,发现更多精彩内容 >>
提交
71a84206
编写于
1月 28, 2015
作者:
Y
Yves Senn
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #18709 from ianks/atomic-write
Return value of yielded block in File.atomic_write
上级
36082a62
b3c23f11
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
18 addition
and
1 deletion
+18
-1
activesupport/CHANGELOG.md
activesupport/CHANGELOG.md
+4
-0
activesupport/lib/active_support/core_ext/file/atomic.rb
activesupport/lib/active_support/core_ext/file/atomic.rb
+4
-1
activesupport/test/core_ext/file_test.rb
activesupport/test/core_ext/file_test.rb
+10
-0
未找到文件。
activesupport/CHANGELOG.md
浏览文件 @
71a84206
*
Return value of yielded block in
`File.atomic_write`
.
*Ian Ker-Seymer*
*
Duplicate frozen array when assigning it to a HashWithIndifferentAccess so
*
Duplicate frozen array when assigning it to a HashWithIndifferentAccess so
that it doesn't raise a
`RuntimeError`
when calling
`map!`
on it in
`convert_value`
.
that it doesn't raise a
`RuntimeError`
when calling
`map!`
on it in
`convert_value`
.
...
...
activesupport/lib/active_support/core_ext/file/atomic.rb
浏览文件 @
71a84206
...
@@ -20,7 +20,7 @@ def self.atomic_write(file_name, temp_dir = Dir.tmpdir)
...
@@ -20,7 +20,7 @@ def self.atomic_write(file_name, temp_dir = Dir.tmpdir)
temp_file
=
Tempfile
.
new
(
basename
(
file_name
),
temp_dir
)
temp_file
=
Tempfile
.
new
(
basename
(
file_name
),
temp_dir
)
temp_file
.
binmode
temp_file
.
binmode
yield
temp_file
return_val
=
yield
temp_file
temp_file
.
close
temp_file
.
close
if
File
.
exist?
(
file_name
)
if
File
.
exist?
(
file_name
)
...
@@ -40,6 +40,9 @@ def self.atomic_write(file_name, temp_dir = Dir.tmpdir)
...
@@ -40,6 +40,9 @@ def self.atomic_write(file_name, temp_dir = Dir.tmpdir)
chown
(
old_stat
.
uid
,
old_stat
.
gid
,
file_name
)
chown
(
old_stat
.
uid
,
old_stat
.
gid
,
file_name
)
# This operation will affect filesystem ACL's
# This operation will affect filesystem ACL's
chmod
(
old_stat
.
mode
,
file_name
)
chmod
(
old_stat
.
mode
,
file_name
)
# Make sure we return the result of the yielded block
return_val
rescue
Errno
::
EPERM
,
Errno
::
EACCES
rescue
Errno
::
EPERM
,
Errno
::
EACCES
# Changing file ownership failed, moving on.
# Changing file ownership failed, moving on.
end
end
...
...
activesupport/test/core_ext/file_test.rb
浏览文件 @
71a84206
...
@@ -57,6 +57,16 @@ def test_atomic_write_preserves_default_file_permissions
...
@@ -57,6 +57,16 @@ def test_atomic_write_preserves_default_file_permissions
File
.
unlink
(
file_name
)
rescue
nil
File
.
unlink
(
file_name
)
rescue
nil
end
end
def
test_atomic_write_returns_result_from_yielded_block
block_return_value
=
File
.
atomic_write
(
file_name
,
Dir
.
pwd
)
do
|
file
|
"Hello world!"
end
assert_equal
"Hello world!"
,
block_return_value
ensure
File
.
unlink
(
file_name
)
rescue
nil
end
private
private
def
file_name
def
file_name
"atomic.file"
"atomic.file"
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录