The serializer must have the 2 methods .load and .dump
(Marshal and YAML have them)
YAML is Human Readable, contrary to Marshal which store in a binary format Marshal does not need any “require”
# File lib/cache_file_store.rb, line 36 def initialize(storage_path, serializer = Marshal) @storage_path = File.expand_path(storage_path) @serializer = serializer # File.directory? for ruby <= 1.9 otherwise, # it makes more sense to do Dir.exist? :/ unless File.directory?(@storage_path) Dir.mkdir(@storage_path) end end
# File lib/cache_file_store.rb, line 47 def clean Dir[File.join(@storage_path, '*')].each do |f| File.delete(f) end end
# File lib/cache_file_store.rb, line 69 def get_entry_file_path(key) @storage_path + '/' + key end
# File lib/cache_file_store.rb, line 53 def read_entry(key) entry_file_path = get_entry_file_path(key) if File.exists?(entry_file_path) return @serializer.load(File.read(entry_file_path)) end end
# File lib/cache_file_store.rb, line 61 def write_entry(key, data_to_store, cache_timeout) if cache_timeout > 0 File.open(get_entry_file_path(key), 'w') do |f| f.write(@serializer.dump(data_to_store)) end end end