Class: Utils::ConfigDir

Inherits:
Object show all
Defined in:
lib/utils/config_dir.rb

Instance Method Summary collapse

Constructor Details

#initialize(name, root_path: nil, env_var: nil) ⇒ ConfigDir

Memoizes the foobar method’s return value and returns the result of the computation. Initializes a new ConfigDir instance with the specified name and optional root path or environment variable.

Parameters:

  • name (String)

    the name of the directory to be used

  • root_path (String, nil) (defaults to: nil)

    the root path to use; if nil, the default root path is used

  • env_var (String, nil) (defaults to: nil)

    the name of the environment variable to check for the root path



14
15
16
17
# File 'lib/utils/config_dir.rb', line 14

def initialize(name, root_path: nil, env_var: nil)
  root_path ||= env_var_path(env_var)
  @directory_path = derive_directory_path(name, root_path)
end

Instance Method Details

#join(path) ⇒ Pathname Also known as: +

Joins the directory path with the given path and returns the combined result.

Parameters:

  • path (String)

    the path to be joined with the directory path

Returns:

  • (Pathname)

    the combined path as a Pathname object



46
47
48
# File 'lib/utils/config_dir.rb', line 46

def join(path)
  @directory_path + path
end

#read(path, default: nil) {|io| ... } ⇒ String?

Reads the content of a file at the given path within the configuration directory.

If the file exists, it returns the file’s content as a string encoded in UTF-8. If a block is given and the file exists, it opens the file and yields to the block. If the file does not exist and a default value is provided, it returns the default. If a block is given and the file does not exist, it yields a StringIO object containing the default value to the block.

directory does not exist

the file does not exist

Parameters:

  • path (String)

    the path to the file relative to the configuration

  • default (String, nil) (defaults to: nil)

    the default value to return if the file

Yields:

  • (io)

Returns:

  • (String, nil)

    the content of the file or the default value if



71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
# File 'lib/utils/config_dir.rb', line 71

def read(path, default: nil, &block)
  full_path = join(path)
  if File.exist?(full_path)
    if block
      File.new(full_path, &block)
    else
      File.read(full_path, encoding: 'UTF-8')
    end
  else
    if default && block
      block.(StringIO.new(default))
    else
      default
    end
  end
end

#to_sString

Returns the string representation of the configuration directory path.

Returns:

  • (String)

    the path of the configuration directory as a string



36
37
38
# File 'lib/utils/config_dir.rb', line 36

def to_s
  @directory_path.to_s
end