Sha256: 1fec48510c1730053f360bef99ed6d5499590e61d3f274308723e794bedd3ba4
Contents?: true
Size: 1.53 KB
Versions: 4
Compression:
Stored size: 1.53 KB
Contents
require 'json' require 'pstore' require 'fileutils' module Nutella module Persist # This module exposes a single method to retrieve a JSONStore def Persist.getJsonStore(file_name) dir = file_name[0..file_name.rindex('/')] file = file_name[file_name.rindex('/')..file_name.length-1] new_dir = dir + Nutella.run_id FileUtils.mkdir_p new_dir JSONStore.new(new_dir + file) end end # JSONStore provides the same functionality as PStore, except it uses JSON # to dump objects instead of Marshal. # Example use: # store = nutella.persist.getJsonStore("json_store/json_test.json") # # Write # store.transaction { store["key"]="value" } # # Read # value = store.transaction { store["key"] } # puts value # prints "value" # # Dump the whole store # hash = store.transaction { store.to_h } # p hash # prints {"key" => "value"} class JSONStore < PStore def dump(table) table.to_json end def load(content) JSON.parse(content) end # Dumps the whole store to hash # example: # store = JSONStore.new("my_file.json") # hash = store.transaction { store.to_h } def to_h @table end def merge!( hash ) @table.merge!(hash) end def marshal_dump_supports_canonical_option? false end EMPTY_MARSHAL_DATA = {}.to_json EMPTY_MARSHAL_CHECKSUM = Digest::MD5.digest(EMPTY_MARSHAL_DATA) def empty_marshal_data EMPTY_MARSHAL_DATA end def empty_marshal_checksum EMPTY_MARSHAL_CHECKSUM end end end
Version data entries
4 entries across 4 versions & 1 rubygems
Version | Path |
---|---|
nutella_lib-0.3.1 | lib/nutella_lib/persist.rb |
nutella_lib-0.3.0 | lib/nutella_lib/persist.rb |
nutella_lib-0.2.2 | lib/nutella_lib/persist.rb |
nutella_lib-0.2.1 | lib/nutella_lib/persist.rb |