Module: SpaceArchitect::AtomicWrite

Defined in:
lib/space_architect/atomic_write.rb

Class Method Summary collapse

Class Method Details

.write(path, content) ⇒ Object



9
10
11
12
13
14
15
16
17
18
19
# File 'lib/space_architect/atomic_write.rb', line 9

def write(path, content)
  path = path.to_s
  dir = File.dirname(path)
  FileUtils.mkdir_p(dir)
  tmp_path = File.join(dir, ".#{File.basename(path)}.#{Process.pid}.tmp")

  File.write(tmp_path, content)
  File.rename(tmp_path, path)
ensure
  FileUtils.rm_f(tmp_path) if defined?(tmp_path) && tmp_path && File.exist?(tmp_path)
end