Module: HatiConfig::Schema

Included in:
Setting
Defined in:
lib/hati_config/schema.rb

Overview

Schema module provides functionality for managing configuration schemas and versioning.

Defined Under Namespace

Classes: MigrationError, SchemaDefinition, ValidationError

Instance Method Summary collapse

Instance Method Details

#migration(versions) {|config| ... } ⇒ Object

Defines a migration between schema versions.

Examples:

migration "1.0" => "2.0" do |config|
  config.replica_urls = [config.delete(:backup_url)].compact
end

Parameters:

  • versions (Hash) —

    The from and to versions (e.g., "1.0" => "2.0")

Yields:

  • (config) —

    The migration block



45
46
47
# File 'lib/hati_config/schema.rb', line 45

def migration(versions, &block)
  schema_definition.add_migration(versions, block)
end

#schema(version: '1.0') { ... } ⇒ Object

Defines a schema for configuration validation.

Examples:

schema version: "1.0" do
  required :database_url, type: :string
  optional :pool_size, type: :integer, default: 5
  deprecated :old_setting, since: "1.0", remove_in: "2.0"
end

Parameters:

  • version (String) (defaults to: '1.0') —

    The schema version (e.g., "1.0", "2.0")

Yields:

  • The schema definition block



16
17
18
19
20
21
# File 'lib/hati_config/schema.rb', line 16

def schema(version: '1.0', &block)
  @schema_version = version
  @schema_definition = SchemaDefinition.new(version)
  @schema_definition.instance_eval(&block) if block_given?
  @schema_definition
end

#schema_definition ⇒ SchemaDefinition

Gets the schema definition.

Returns:



33
34
35
# File 'lib/hati_config/schema.rb', line 33

def schema_definition
  @schema_definition ||= SchemaDefinition.new(schema_version)
end

#schema_version ⇒ String

Gets the current schema version.

Returns:

  • (String) —

    The current schema version



26
27
28
# File 'lib/hati_config/schema.rb', line 26

def schema_version
  @schema_version || '1.0'
end