class Spandx::Rubygems::DataFile

Attributes

path[R]

Public Class Methods

new(path, default: {}) click to toggle source
# File lib/spandx/rubygems/data_file.rb, line 8
def initialize(path, default: {})
  @path = path
  @default = default
end

Public Instance Methods

batch(size:) { |packer| ... } click to toggle source
# File lib/spandx/rubygems/data_file.rb, line 21
def batch(size:)
  Zlib::GzipWriter.open(path) do |io|
    packer = MessagePack::Packer.new(io)
    packer.write_map_header(size)
    yield packer
    packer.flush
  end
end
data() click to toggle source
# File lib/spandx/rubygems/data_file.rb, line 13
def data
  @data ||= read(default: @default)
end
save!() click to toggle source
# File lib/spandx/rubygems/data_file.rb, line 30
def save!
  write(data)
end
size() click to toggle source
# File lib/spandx/rubygems/data_file.rb, line 17
def size
  File.size(path)
end

Private Instance Methods

read(default: nil) click to toggle source
# File lib/spandx/rubygems/data_file.rb, line 36
def read(default: nil)
  return default unless File.exist?(path)
  return default if File.empty?(path)

  MessagePack.unpack(Zlib::GzipReader.open(path, &:read))
end
write(data) click to toggle source
# File lib/spandx/rubygems/data_file.rb, line 43
def write(data)
  FileUtils.mkdir_p(File.dirname(path))
  Zlib::GzipWriter.open(path) do |io|
    packer = MessagePack::Packer.new(io)
    packer.write(data)
    packer.flush
  end
end