Sha256: 42f50192349221ba141d8b8d9e980979820dfcd48fd7897d2ef636a0cd94c16c
Contents?: true
Size: 1.26 KB
Versions: 1
Compression:
Stored size: 1.26 KB
Contents
require 'hashie' module Polytrix class StateFileLoadError < StandardError; end class StateFile def initialize(polytrix_root, name) @file_name = File.expand_path( File.join(polytrix_root, '.polytrix', "#{name}.yml") ) end def read if File.exist?(file_name) Hashie::Mash.load(file_name).dup else Hashie::Mash.new end end def write(state) dir = File.dirname(file_name) serialized_string = serialize_hash(Util.stringified_hash(state)) FileUtils.mkdir_p(dir) unless File.directory?(dir) File.open(file_name, 'wb') { |f| f.write(serialized_string) } end def destroy FileUtils.rm_f(file_name) if File.exist?(file_name) end def diagnose raw = read result = {} raw.keys.sort.each { |k| result[k] = raw[k] } result end private attr_reader :file_name # @api private def read_file IO.read(file_name) end # @api private def deserialize_string(string) SafeYAML.load(string) rescue SyntaxError, Psych::SyntaxError => ex raise StateFileLoadError, "Error parsing #{file_name} (#{ex.message})" end # @api private def serialize_hash(hash) ::YAML.dump(hash) end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
polytrix-0.1.0 | lib/polytrix/state_file.rb |