Class: Servus::Config

Inherits:
Object
  • Object
show all
Defined in:
lib/servus/config.rb

Overview

Configuration settings for the Servus gem.

Manages global configuration options including schema file locations. Access the configuration via config or modify via configure.

Examples:

Customizing schema location

Servus.configure do |config|
  config.schema_root = Rails.root.join('lib/schemas')
end

See Also:

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeConfig

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.

Initializes a new configuration with default values.



62
63
64
65
66
67
68
69
70
# File 'lib/servus/config.rb', line 62

def initialize
  @guards_dir   = 'app/guards'
  @events_dir   = 'app/events'
  @schemas_dir  = 'app/schemas'
  @services_dir = 'app/services'

  @strict_event_validation = true
  @include_default_guards  = true
end

Instance Attribute Details

#events_dirString

The directory where event handlers are located.

Defaults to Rails.root/app/events in Rails applications.

Returns:

  • (String)

    the events directory path



30
31
32
# File 'lib/servus/config.rb', line 30

def events_dir
  @events_dir
end

#guards_dirString

The directory where guard classes are located.

Defaults to Rails.root/app/guards in Rails applications.

Returns:

  • (String)

    the guards directory path



52
53
54
# File 'lib/servus/config.rb', line 52

def guards_dir
  @guards_dir
end

#include_default_guardsBoolean

Whether to include the default built-in guards (EnsurePresent, EnsurePositive).

Returns:

  • (Boolean)

    true to include default guards, false to exclude them



57
58
59
# File 'lib/servus/config.rb', line 57

def include_default_guards
  @include_default_guards
end

#schemas_dirString

The directory where JSON schema files are located.

Defaults to Rails.root/app/schemas/services in Rails applications.

Returns:

  • (String)

    the schemas directory path



23
24
25
# File 'lib/servus/config.rb', line 23

def schemas_dir
  @schemas_dir
end

#services_dirString

The directory where services are located.

Defaults to Rails.root/app/services in Rails applications.

Returns:

  • (String)

    the services directory path



37
38
39
# File 'lib/servus/config.rb', line 37

def services_dir
  @services_dir
end

#strict_event_validationBoolean

Whether to validate that all event handlers subscribe to events that are actually emitted by services.

When enabled, raises an error on boot if handlers subscribe to non-existent events. Helps catch typos and orphaned handlers.

Returns:

  • (Boolean)

    true to validate, false to skip validation



45
46
47
# File 'lib/servus/config.rb', line 45

def strict_event_validation
  @strict_event_validation
end

Instance Method Details

#schema_dir_for(service_namespace) ⇒ String

Returns the directory containing a service's schema files.

Examples:

config.schema_dir_for("process_payment")
# => "/full/path/app/schemas/process_payment"

Parameters:

  • service_namespace (String)

    underscored service namespace

Returns:

  • (String)

    directory path for the service's schemas



93
94
95
# File 'lib/servus/config.rb', line 93

def schema_dir_for(service_namespace)
  File.join(root_path, schemas_dir, service_namespace)
end

#schema_path_for(service_namespace, type) ⇒ String

Returns the full path to a service's schema file.

Examples:

config.schema_path_for("process_payment", "arguments")
# => "/full/path/app/schemas/process_payment/arguments.json"

Parameters:

  • service_namespace (String)

    underscored service namespace (e.g., "process_payment")

  • type (String)

    schema type ("arguments" or "result")

Returns:

  • (String)

    full path to the schema JSON file



81
82
83
# File 'lib/servus/config.rb', line 81

def schema_path_for(service_namespace, type)
  File.join(root_path, schemas_dir, service_namespace, "#{type}.json")
end