Skip to content
Kward Search API index

Module: Kward::PrivateFile

Defined in:
lib/kward/private_file.rb

Overview

Writes sensitive JSON files with private filesystem permissions.

Class Method Summary collapse

Class Method Details

.write_json(path, data) ⇒ Object



11
12
13
14
15
16
17
18
19
20
21
22
23
24
# File 'lib/kward/private_file.rb', line 11

def write_json(path, data)
  path = File.expand_path(path)
  directory = File.dirname(path)
  FileUtils.mkdir_p(directory, mode: 0o700)

  Tempfile.create([".#{File.basename(path)}.", ".tmp"], directory, mode: 0o600) do |file|
    file.write(JSON.pretty_generate(data))
    file.write("\n")
    file.flush
    file.fsync
    file.close
    File.rename(file.path, path)
  end
end