class Yomikomu::FlatFileStorage
Public Class Methods
new()
click to toggle source
Calls superclass method
Yomikomu::BasicStorage::new
# File lib/yomikomu.rb, line 276 def initialize super require 'fileutils' @updated = false if File.exist?(index_path) open(index_path, 'rb'){|f| @index = Marshal.load(f)} else @index = {} open(data_path, 'w'){} # touch end @data_file = open(data_path, 'a+b') at_exit{ if @updated open(index_path, 'wb'){|f| Marshal.dump(@index, f)} Yomikomu.info{'FlatFile: update'} end } end
Public Instance Methods
data_path()
click to toggle source
# File lib/yomikomu.rb, line 272 def data_path Yomikomu.prefix + 'ff_data' end
index_path()
click to toggle source
# File lib/yomikomu.rb, line 268 def index_path Yomikomu.prefix + 'ff_index' end
remove_compiled_iseq(fname)
click to toggle source
# File lib/yomikomu.rb, line 299 def remove_compiled_iseq fname raise 'unsupported' end
Private Instance Methods
compiled_iseq_exist?(fname, iseq_key)
click to toggle source
# File lib/yomikomu.rb, line 305 def compiled_iseq_exist? fname, iseq_key @index[iseq_key] end
compiled_iseq_is_younger?(fname, iseq_key)
click to toggle source
# File lib/yomikomu.rb, line 309 def compiled_iseq_is_younger? fname, iseq_key offset, size, date = @index[iseq_key] date.to_i >= File.mtime(fname).to_i end
read_compiled_iseq(fname, iseq_key)
click to toggle source
# File lib/yomikomu.rb, line 314 def read_compiled_iseq fname, iseq_key offset, size, date = @index[iseq_key] @data_file.pos = offset binary = @data_file.read(size) raise "size is not match" if binary.size != size binary end
write_compiled_iseq(fname, iseq_key, binary)
click to toggle source
# File lib/yomikomu.rb, line 322 def write_compiled_iseq fname, iseq_key, binary raise "compiled binary for #{fname} already exists. flatfile does not support overwrite." if compiled_iseq_exist?(fname, iseq_key) @data_file.seek 0, IO::SEEK_END offset = @data_file.tell size = binary.size date = Time.now.to_i @data_file.write(binary) @index[iseq_key] = [offset, size, date] @updated = true end