lib/picky/backends/file/basic.rb in picky-3.1.0 vs lib/picky/backends/file/basic.rb in picky-3.1.1
- old
+ new
@@ -1,108 +1,38 @@
module Picky
module Backends
- # Handles all aspects of index files, such as dumping/loading.
- #
- module File
+ class File
- # Base class for all index files.
+ # Base class for all file-based index files.
#
# Provides necessary helper methods for its
# subclasses.
# Not directly useable, as it does not provide
# dump/load methods.
#
class Basic
- # This file's location.
- #
- attr_reader :cache_path
+ attr_reader :cache_path, # This index file's location.
+ :mapping_file # The index file's mapping file (loaded into memory for quick access).
# An index cache takes a path, without file extension,
# which will be provided by the subclasses.
#
def initialize cache_path
- @cache_path = "#{cache_path}.#{extension}"
+ @cache_path = "#{cache_path}.file.#{extension}"
+
+ # This is the mapping file with the in-memory hash for the
+ # file position/offset mappings.
+ #
+ @mapping_file = Memory::JSON.new "#{cache_path}.file_mapping.#{extension}"
end
# The default extension for index files is "index".
#
def extension
:index
- end
-
- # Will copy the index file to a location that
- # is in a directory named "backup" right under
- # the directory the index file is in.
- #
- def backup
- prepare_backup backup_directory
- FileUtils.cp cache_path, target, verbose: true
- end
-
- # The backup directory of this file.
- # Equal to the file's dirname plus /backup
- #
-
- def backup_directory
- ::File.join ::File.dirname(cache_path), 'backup'
- end
-
- # Prepares the backup directory for the file.
- #
- def prepare_backup target
- FileUtils.mkdir target unless Dir.exists?(target)
- end
-
- # Copies the file from its backup location back
- # to the original location.
- #
- def restore
- FileUtils.cp backup_file_path_of(cache_path), cache_path, verbose: true
- end
-
- # The backup filename.
- #
- def backup_file_path_of path
- dir, name = ::File.split path
- ::File.join dir, 'backup', name
- end
-
- # Deletes the file.
- #
- def delete
- `rm -Rf #{cache_path}`
- end
-
- # Checks.
- #
-
- # Is this cache file suspiciously small?
- # (less than 8 Bytes of size)
- #
- def cache_small?
- size_of(cache_path) < 8
- end
- # Is the cache ok? (existing and larger than
- # zero Bytes in size)
- #
- # A small cache is still ok.
- #
- def cache_ok?
- size_of(cache_path) > 0
- end
- # Extracts the size of the file in Bytes.
- #
- def size_of path
- `ls -l #{path} | awk '{print $5}'`.to_i
- end
-
- #
- #
- def to_s
- "#{self.class}(#{cache_path})"
end
end
end
\ No newline at end of file