class FactoryFaster::DataStore
Each row looks like this: filename|md5 hash|lines to skip test/unit/foo_test.rb|abcdefabcde|5,12,19,20
Attributes
records[R]
store_file[R]
Public Class Methods
new(filename)
click to toggle source
# File lib/factory_faster/data_store.rb, line 12 def initialize(filename) @store_file = filename load end
Public Instance Methods
set(filename, skips)
click to toggle source
# File lib/factory_faster/data_store.rb, line 17 def set(filename, skips) @records[filename] = [signature_for(filename),skips] store end
skips_for(filename)
click to toggle source
# File lib/factory_faster/data_store.rb, line 22 def skips_for(filename) (!@records[filename].nil? && !@records[filename][1].nil?) ? @records[filename][1] : [] end
unchanged?(filename)
click to toggle source
# File lib/factory_faster/data_store.rb, line 26 def unchanged?(filename) !@records[filename].nil? && @records[filename][0] == signature_for(filename) end
Private Instance Methods
load()
click to toggle source
in memory data structure is test/unit/foo_test.rb => [abcdefabcde, [5,12,19.20]]
# File lib/factory_faster/data_store.rb, line 46 def load @records = {} File.readlines(store_file).each do |line| fields = line.split("|") filename = fields[0] signature = fields[1] skips = !fields[2].nil? ? fields[2].split(',').map(&:to_i) : [] @records[filename] = [signature, skips] end unless !File.exists?(store_file) end
signature_for(filename)
click to toggle source
# File lib/factory_faster/data_store.rb, line 32 def signature_for(filename) Digest::MD5.hexdigest(File.read(filename)) end
store()
click to toggle source
# File lib/factory_faster/data_store.rb, line 36 def store File.open(store_file, "w") do |f| @records.each do |filename, data| f.syswrite("#{filename}|#{data[0]}|#{data[1].join(',')}\n") end end end