Class: Vectory::Configuration

Inherits:
Object
  • Object
show all
Defined in:
lib/vectory/configuration.rb

Overview

Configuration for Vectory

Provides centralized configuration for timeouts, caching, etc. Can be loaded from environment variables or a configuration file.

Examples:

Load from environment variables

Vectory::Configuration.load_from_environment

Constant Summary collapse

DEFAULT_TIMEOUT =

Default timeout for external tool execution (seconds)

120
DEFAULT_CACHE_TTL =

Default cache TTL for memoized values (seconds)

300
DEFAULT_TEMP_DIR =

Default temporary directory

nil

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeConfiguration

Initialize configuration with default values



39
40
41
42
43
44
45
# File 'lib/vectory/configuration.rb', line 39

def initialize
  @timeout = DEFAULT_TIMEOUT
  @cache_ttl = DEFAULT_CACHE_TTL
  @cache_enabled = true
  @temp_dir = DEFAULT_TEMP_DIR
  @verbose_logging = false
end

Instance Attribute Details

#cache_enabledObject

Use system default



21
22
23
# File 'lib/vectory/configuration.rb', line 21

def cache_enabled
  @cache_enabled
end

#cache_ttlObject

Use system default



21
22
23
# File 'lib/vectory/configuration.rb', line 21

def cache_ttl
  @cache_ttl
end

#temp_dirObject

Use system default



21
22
23
# File 'lib/vectory/configuration.rb', line 21

def temp_dir
  @temp_dir
end

#timeoutObject

Use system default



21
22
23
# File 'lib/vectory/configuration.rb', line 21

def timeout
  @timeout
end

#verbose_loggingObject

Use system default



21
22
23
# File 'lib/vectory/configuration.rb', line 21

def verbose_logging
  @verbose_logging
end

Class Method Details

.instanceVectory::Configuration

Get the singleton instance

Returns:



27
28
29
# File 'lib/vectory/configuration.rb', line 27

def self.instance
  @instance ||= new
end

.load_from_environmentself

Load configuration from environment variables

Supported environment variables:

  • VECTORY_TIMEOUT: Timeout for external tools (default: 120)
  • VECTORY_CACHE_TTL: Cache TTL in seconds (default: 300)
  • VECTORY_CACHE_ENABLED: Enable/disable caching (default: true)
  • VECTORY_TEMP_DIR: Temporary directory path
  • VECTORY_VERBOSE: Enable verbose logging (default: false)

Returns:

  • (self)

    the configuration instance



57
58
59
60
61
62
63
64
65
66
67
# File 'lib/vectory/configuration.rb', line 57

def self.load_from_environment
  config = instance

  config.timeout = ENV["VECTORY_TIMEOUT"]&.to_i || config.timeout
  config.cache_ttl = ENV["VECTORY_CACHE_TTL"]&.to_i || config.cache_ttl
  config.cache_enabled = ENV["VECTORY_CACHE_ENABLED"] != "false"
  config.temp_dir = ENV["VECTORY_TEMP_DIR"] if ENV["VECTORY_TEMP_DIR"]
  config.verbose_logging = ENV["VECTORY_VERBOSE"] == "true"

  config
end

.load_from_file(path) ⇒ self

Load configuration from a YAML file

Parameters:

  • path (String)

    path to the YAML configuration file

Returns:

  • (self)

    the configuration instance

Raises:

  • (Errno::ENOENT)

    if the file doesn't exist



74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
# File 'lib/vectory/configuration.rb', line 74

def self.load_from_file(path)
  require "yaml"
  config_data = YAML.load_file(path)

  config = instance
  config.timeout = config_data["timeout"] || config.timeout
  config.cache_ttl = config_data["cache_ttl"] || config.cache_ttl
  config.cache_enabled = config_data.fetch("cache_enabled",
                                           config.cache_enabled)
  config.temp_dir = config_data["temp_dir"] || config.temp_dir
  config.verbose_logging = config_data.fetch("verbose_logging",
                                             config.verbose_logging)

  config
end

.reset!Object

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Reset the configuration to defaults



34
35
36
# File 'lib/vectory/configuration.rb', line 34

def self.reset!
  @instance = new
end

Instance Method Details

#caching_enabled?Boolean

Check if caching is enabled

Returns:

  • (Boolean)

    true if caching is enabled



106
107
108
# File 'lib/vectory/configuration.rb', line 106

def caching_enabled?
  @cache_enabled
end

#temporary_directoryString

Get the temporary directory

Returns:

  • (String)

    the temporary directory path



113
114
115
# File 'lib/vectory/configuration.rb', line 113

def temporary_directory
  @temp_dir || Dir.tmpdir
end

#to_hHash

Export configuration as a hash

Returns:

  • (Hash)

    the configuration as a hash



93
94
95
96
97
98
99
100
101
# File 'lib/vectory/configuration.rb', line 93

def to_h
  {
    timeout: @timeout,
    cache_ttl: @cache_ttl,
    cache_enabled: @cache_enabled,
    temp_dir: @temp_dir,
    verbose_logging: @verbose_logging,
  }
end

#validate!Boolean

Validate the configuration

Returns:

  • (Boolean)

    true if configuration is valid

Raises:

  • (ArgumentError)

    if configuration is invalid



128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
# File 'lib/vectory/configuration.rb', line 128

def validate!
  errors = []

  if @timeout && @timeout <= 0
    errors << "timeout must be positive, got: #{@timeout}"
  end

  if @cache_ttl&.negative?
    errors << "cache_ttl must be non-negative, got: #{@cache_ttl}"
  end

  if @temp_dir && !File.directory?(@temp_dir)
    errors << "temp_dir does not exist: #{@temp_dir}"
  end

  return true if errors.empty?

  raise ArgumentError,
        "Invalid configuration:\n  - #{errors.join("\n  - ")}"
end

#verbose_logging?Boolean

Check if verbose logging is enabled

Returns:

  • (Boolean)

    true if verbose logging is enabled



120
121
122
# File 'lib/vectory/configuration.rb', line 120

def verbose_logging?
  @verbose_logging
end