module

BakedFileSystem

A BakedFileSystem allows to include ("bake") static files into a compiled binary and make them accessible at runtime using their path.

Usage

# Using BakedFileSystem.load
class MyFileSystem
  extend BakedFileSystem
  bake_folder "path/to/root/folder"
end

# Creating a file manually
class MyFileSystem
  extend BakedFileSystem
  bake_file "hello-world.txt", "Hello World\n"
end

Constants

VERSION = "0.14.1"

Instance methods

bake_file(path : String, content)

Creates a BakedFile at path with content content and adds it to this file system.

Source
bake_file(file : BakedFile)

Adds a baked file to this file system.

Source
files

Returns all virtual files in this file system.

Source
get(path : String) : BakedFile

Returns a BakedFile at path.

Raises NoSuchFileError if the virtual file does not exist.

Source
get(path : String, &block : BakedFile -> T) : T forall T

Opens a file and yields it to the block, ensuring it's closed afterwards.

MyFiles.get("file.txt") do |file|
  file.gets_to_end
end
Source
get?(path : String) : BakedFile | Nil

Returns a BakedFile at path or nil if the virtual file does not exist.

Source
get?(path : String, &block : BakedFile -> T) : T | Nil forall T

Opens a file and yields it to the block, ensuring it's closed afterwards. Returns nil if the file does not exist.

MyFiles.get?("file.txt") do |file|
  file.gets_to_end
end
Source

Macros

bake_folder(path, dir = __DIR__, allow_empty = false, include_dotfiles = false, include_patterns = nil, exclude_patterns = nil, max_size = nil, compress = true)

Bakes all files in path into this baked file system. If path is relative, it will be based on dir which defaults to __DIR__. It will raise if there are no files found in path unless allow_empty is set to true. The include_patterns parameter accepts an array of glob patterns to include specific files. The exclude_patterns parameter accepts an array of glob patterns to exclude specific files. The max_size parameter can be used to enforce a maximum total stored size limit (in bytes). The compress parameter can be set to false to store files without gzip compression.

Source
load(path, dir = __DIR__, allow_empty = false)

Creates a baked file system and loads contents of files in path. If path is relative, it will be based on dir which defaults to __DIR__. It will raise if there are no files found in path unless allow_empty is set to true.

DEPRECATED: Use extend BakedFileSystem and bake_folder instead.

Source

Nested types