Class: Tasker::Types::EngineConfig
- Inherits:
-
BaseConfig
- Object
- Dry::Struct
- BaseConfig
- Tasker::Types::EngineConfig
- Defined in:
- lib/tasker/types/engine_config.rb
Overview
Configuration type for core engine settings
This configuration handles core Tasker engine settings including task handler directories, identity strategies, and custom event configurations. It provides the same functionality as the original EngineConfiguration but with dry-struct type safety and immutability.
Instance Attribute Summary collapse
-
#custom_events_directories ⇒ Array<String>
readonly
Custom event directories.
-
#default_module_namespace ⇒ String?
readonly
Default module namespace for generated handlers.
-
#identity_strategy ⇒ Symbol
readonly
Identity strategy (:default, :hash, :custom).
-
#identity_strategy_class ⇒ String?
readonly
Custom identity strategy class name.
-
#task_config_directory ⇒ String
readonly
Task configuration directory path.
-
#task_handler_directory ⇒ String
readonly
Task handler directory path.
Class Method Summary collapse
-
.default_custom_events_directories ⇒ Array<String>
Get default custom events directories.
Instance Method Summary collapse
-
#add_custom_events_directories(*directories) ⇒ EngineConfig
Add custom event directories to the existing configuration.
-
#identity_strategy_instance ⇒ Tasker::IdentityStrategy
Creates and returns an appropriate identity strategy instance.
-
#set_custom_events_directories(directories) ⇒ EngineConfig
Set custom event directories (replaces the default list).
Methods inherited from BaseConfig
Constructor Details
This class inherits a constructor from Tasker::Types::BaseConfig
Instance Attribute Details
#custom_events_directories ⇒ Array<String> (readonly)
Returns Custom event directories.
64 65 66 |
# File 'lib/tasker/types/engine_config.rb', line 64 attribute :custom_events_directories, Types::Array.of(Types::String).default(proc { default_custom_events_directories }.freeze, shared: true) |
#default_module_namespace ⇒ String? (readonly)
Returns Default module namespace for generated handlers.
46 |
# File 'lib/tasker/types/engine_config.rb', line 46 attribute? :default_module_namespace, Types::String.optional.default(nil) |
#identity_strategy ⇒ Symbol (readonly)
Returns Identity strategy (:default, :hash, :custom).
52 |
# File 'lib/tasker/types/engine_config.rb', line 52 attribute :identity_strategy, Types::Symbol.default(:default) |
#identity_strategy_class ⇒ String? (readonly)
Returns Custom identity strategy class name.
58 |
# File 'lib/tasker/types/engine_config.rb', line 58 attribute? :identity_strategy_class, Types::String.optional.default(nil) |
#task_config_directory ⇒ String (readonly)
Returns Task configuration directory path.
40 |
# File 'lib/tasker/types/engine_config.rb', line 40 attribute :task_config_directory, Types::String.default('tasker/tasks') |
#task_handler_directory ⇒ String (readonly)
Returns Task handler directory path.
34 |
# File 'lib/tasker/types/engine_config.rb', line 34 attribute :task_handler_directory, Types::String.default('tasks') |
Class Method Details
.default_custom_events_directories ⇒ Array<String>
Get default custom events directories
71 72 73 74 75 |
# File 'lib/tasker/types/engine_config.rb', line 71 def self.default_custom_events_directories [ 'config/tasker/events' ].freeze end |
Instance Method Details
#add_custom_events_directories(*directories) ⇒ EngineConfig
Add custom event directories to the existing configuration
Since dry-struct types are immutable, this returns a new instance.
108 109 110 111 |
# File 'lib/tasker/types/engine_config.rb', line 108 def add_custom_events_directories(*directories) new_directories = (custom_events_directories + directories.flatten).uniq self.class.new(to_h.merge(custom_events_directories: new_directories)) end |
#identity_strategy_instance ⇒ Tasker::IdentityStrategy
Creates and returns an appropriate identity strategy instance
81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 |
# File 'lib/tasker/types/engine_config.rb', line 81 def identity_strategy_instance case identity_strategy when :default Tasker::IdentityStrategy.new when :hash Tasker::HashIdentityStrategy.new when :custom if identity_strategy_class.nil? raise ArgumentError, 'Custom identity strategy selected but no identity_strategy_class provided' end begin identity_strategy_class.constantize.new rescue NameError => e raise ArgumentError, "Invalid identity_strategy_class: #{e.}" end else raise ArgumentError, "Unknown identity_strategy: #{identity_strategy}" end end |
#set_custom_events_directories(directories) ⇒ EngineConfig
Set custom event directories (replaces the default list)
Since dry-struct types are immutable, this returns a new instance.
119 120 121 |
# File 'lib/tasker/types/engine_config.rb', line 119 def set_custom_events_directories(directories) self.class.new(to_h.merge(custom_events_directories: directories.flatten)) end |