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