0.0
No commit activity in last 3 years
No release in over 3 years
The folder_stash gem will store files in a directory with a user definable number of nested subdirectories in a given path and a maximum number of items allowed per subdirectory. New nested subdirectories will be created on demand as a given subdirectory reaches the specified limit of items. All created subdirectories will have randomized base names.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
 Dependencies
 Project Readme

folder_stash¶ ↑

The folder_stash gem will store files in a directory with a user definable number of nested subdirectories in a given path and a maximum number of items allowed per subdirectory.

New nested subdirectories will be created on demand as a given subdirectory reaches the specified limit of items. All created subdirectories will have randomized base names.

folder_stash uses a symlink (.current_store_path) to the currently available directory. By default the symlink will be in the top level storage directory, but it can optionally be placed in any directory.

Installation¶ ↑

gem install folder_stash

Usage¶ ↑

The basic usage is to create a new instance of FileUsher with the directory in which files are to be stored in; the top level storage directory.

require 'folder_stash'

# create a new FileUsher instance with defaults (2 levels of subdirectories,
# 10000 items per subdirectory)
usher = FolderStash::FileUsher.new('~/storage_dir')

FileUsher will try to locate the .current_store_path symlink, either in the top level directory, or, if any other location for the link passed as the link_location option passed to the initializer.

If the symlink does not exist, it will create a new branch (nested path) with the number of nested subdirectories given in the nesting_levels option passed to the initializer and create the symlink which will point to the terminal (most deeply nested) subdirectory.

storage_directory
├── .current_store_path -> ~/storage_dir/a1bd81a073a78025/2d9dfcd7a6c329b4
└── a1bd81a073a78025
    └── 2d9dfcd7a6c329b4

If the symlink exists, FileUsher will use the existing subdirectory hierarchy.

Files can be copied or moved to the directory the symlink currently points to using the #copy and #move methods respectively, which both will return the path the file was stored to.

usher.copy('~/image1.jpg')
# => "storage_dir/a1bd81a073a78025/2d9dfcd7a6c329b4/image1.jpg"

usher.move('~/image2.jpg')
# => "storage_dir/a1bd81a073a78025/2d9dfcd7a6c329b4/image2.jpg"

The path returned will by default start with the top level storage directory. It is possible to return the relative path or absolute path by passing the values :relative or :absolute as the pathtype option:

usher.copy('~/image3.jpg', :pathtype => :relative)
# => "path/to/storage_dir/a1bd81a073a78025/2d9dfcd7a6c329b4/image3.jpg"

usher.copy('~/image4.jpg', :pathtype => :absolute)
# => "/path/to/storage_dir/a1bd81a073a78025/2d9dfcd7a6c329b4/image4.jpg"