Use FileUtils.mv instead of rename to copy in case of cross-device links
This commit is contained in:
parent
a5684dfa3c
commit
cc852e2580
|
@ -14,6 +14,7 @@ class File
|
||||||
# end
|
# end
|
||||||
def self.atomic_write(file_name, temp_dir = Dir.tmpdir)
|
def self.atomic_write(file_name, temp_dir = Dir.tmpdir)
|
||||||
require 'tempfile' unless defined?(Tempfile)
|
require 'tempfile' unless defined?(Tempfile)
|
||||||
|
require 'fileutils' unless defined?(FileUtils)
|
||||||
|
|
||||||
temp_file = Tempfile.new(basename(file_name), temp_dir)
|
temp_file = Tempfile.new(basename(file_name), temp_dir)
|
||||||
yield temp_file
|
yield temp_file
|
||||||
|
@ -31,7 +32,7 @@ class File
|
||||||
end
|
end
|
||||||
|
|
||||||
# Overwrite original file with temp file
|
# Overwrite original file with temp file
|
||||||
rename(temp_file.path, file_name)
|
FileUtils.mv(temp_file.path, file_name)
|
||||||
|
|
||||||
# Set correct permissions on new file
|
# Set correct permissions on new file
|
||||||
chown(old_stat.uid, old_stat.gid, file_name)
|
chown(old_stat.uid, old_stat.gid, file_name)
|
||||||
|
|
Loading…
Reference in New Issue