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