class Pakyow::Support::Serializer
Persists state for an object.
Attributes
logger[R]
name[R]
object[R]
path[R]
Public Class Methods
new(object, name:, path:, logger:)
click to toggle source
# File lib/pakyow/support/serializer.rb, line 12 def initialize(object, name:, path:, logger:) @object, @name, @path, @logger = object, name, path, logger end
Public Instance Methods
deserialize()
click to toggle source
# File lib/pakyow/support/serializer.rb, line 25 def deserialize if File.exist?(serialized_state_path) Marshal.load(File.read(serialized_state_path)).each do |ivar, value| @object.instance_variable_set(ivar, value) end end rescue => error FileUtils.rm(serialized_state_path) @logger.error "[Serializer] failed to deserialize `#{@name}': #{error}" end
serialize()
click to toggle source
# File lib/pakyow/support/serializer.rb, line 16 def serialize FileUtils.mkdir_p(@path) File.open(serialized_state_path, "w+") do |file| file.write(Marshal.dump(@object.serialize)) end rescue => error @logger.error "[Serializer] failed to serialize `#{@name}': #{error}" end
Private Instance Methods
serialized_state_path()
click to toggle source
# File lib/pakyow/support/serializer.rb, line 38 def serialized_state_path File.join(@path, "#{@name}.pwstate") end