Module: Kaal
- Extended by:
- RegisterConflictSupport
- Defined in:
- lib/kaal.rb,
lib/kaal/cli.rb,
lib/kaal/core.rb,
lib/kaal/utils.rb,
lib/kaal/config.rb,
lib/kaal/runtime.rb,
lib/kaal/version.rb,
lib/kaal/registry.rb,
lib/kaal/backend/mysql.rb,
lib/kaal/backend/sqlite.rb,
lib/kaal/scheduler_file.rb,
lib/kaal/sequel_support.rb,
lib/kaal/backend/adapter.rb,
lib/kaal/backend/postgres.rb,
lib/kaal/core/coordinator.rb,
lib/kaal/utils/cron_utils.rb,
lib/kaal/dispatch/registry.rb,
lib/kaal/support/hash_tools.rb,
lib/kaal/definition/registry.rb,
lib/kaal/config/configuration.rb,
lib/kaal/persistence/database.rb,
lib/kaal/utils/cron_humanizer.rb,
lib/kaal/active_record_support.rb,
lib/kaal/backend/redis_adapter.rb,
lib/kaal/dispatch/redis_engine.rb,
lib/kaal/scheduler_file/loader.rb,
lib/kaal/backend/memory_adapter.rb,
lib/kaal/core/occurrence_finder.rb,
lib/kaal/dispatch/memory_engine.rb,
lib/kaal/definition/redis_engine.rb,
lib/kaal/runtime/runtime_context.rb,
lib/kaal/backend/dispatch_logging.rb,
lib/kaal/definition/memory_engine.rb,
lib/kaal/dispatch/database_engine.rb,
lib/kaal/register_conflict_support.rb,
lib/kaal/definition/database_engine.rb,
lib/kaal/scheduler_file/job_applier.rb,
lib/kaal/runtime/signal_handler_chain.rb,
lib/kaal/scheduler_file/helper_bundle.rb,
lib/kaal/config/scheduler_config_error.rb,
lib/kaal/core/enabled_entry_enumerator.rb,
lib/kaal/definitions/registry_accessor.rb,
lib/kaal/internal/sequel/mysql_backend.rb,
lib/kaal/runtime/scheduler_boot_loader.rb,
lib/kaal/scheduler_file/hash_transform.rb,
lib/kaal/scheduler_file/job_normalizer.rb,
lib/kaal/scheduler_file/payload_loader.rb,
lib/kaal/definition/persistence_helpers.rb,
lib/kaal/backend/dispatch_attempt_logger.rb,
lib/kaal/persistence/migration_templates.rb,
lib/kaal/utils/idempotency_key_generator.rb,
lib/kaal/definitions/registration_service.rb,
lib/kaal/internal/sequel/database_backend.rb,
lib/kaal/internal/sequel/postgres_backend.rb,
lib/kaal/runtime/signal_handler_installer.rb,
lib/kaal/backend/dispatch_registry_accessor.rb,
lib/kaal/internal/active_record/base_record.rb,
lib/kaal/internal/active_record/lock_record.rb,
lib/kaal/scheduler_file/placeholder_support.rb,
lib/kaal/config/scheduler_time_zone_resolver.rb,
lib/kaal/internal/active_record/mysql_backend.rb,
lib/kaal/internal/active_record/dispatch_record.rb,
lib/kaal/internal/active_record/database_backend.rb,
lib/kaal/internal/active_record/postgres_backend.rb,
lib/kaal/internal/active_record/definition_record.rb,
lib/kaal/internal/active_record/dispatch_registry.rb,
lib/kaal/internal/active_record/connection_support.rb,
lib/kaal/internal/active_record/definition_registry.rb,
lib/kaal/internal/active_record/migration_templates.rb
Overview
Copyright Codevedas Inc. 2025-present
This source code is licensed under the MIT license found in the LICENSE file in the root directory of this source tree.
Defined Under Namespace
Modules: ActiveRecord, Backend, Config, Core, CronHumanizer, CronUtils, Definition, Definitions, Dispatch, Internal, Persistence, RegisterConflictSupport, Runtime, SchedulerFile, SchedulerHashTransform, SchedulerPlaceholderSupport, Sequel, Support, Utils
Classes: CLI, Configuration, ConfigurationError, Coordinator, EnabledEntryEnumerator, IdempotencyKeyGenerator, OccurrenceFinder, Registry, RegistryError, RuntimeContext, SchedulerBootLoader, SchedulerConfigError, SchedulerFileLoader, SchedulerTimeZoneResolver, SignalHandlerChain, SignalHandlerInstaller
Constant Summary
collapse
- VERSION =
'0.4.0'
Class Method Summary
collapse
Class Method Details
.backend ⇒ Object
160
|
# File 'lib/kaal.rb', line 160
def backend = configuration.backend
|
.backend=(value) ⇒ Object
184
185
186
|
# File 'lib/kaal.rb', line 184
def backend=(value)
configuration.backend = value
end
|
.configuration ⇒ Object
41
42
43
|
# File 'lib/kaal.rb', line 41
def configuration
@configuration ||= Configuration.new
end
|
78
79
80
|
# File 'lib/kaal.rb', line 78
def configure
yield(configuration) if block_given?
end
|
.coordinator ⇒ Object
49
50
51
|
# File 'lib/kaal.rb', line 49
def coordinator
@coordinator ||= Coordinator.new(configuration: configuration, registry: registry)
end
|
.definition_registry ⇒ Object
196
197
198
|
# File 'lib/kaal.rb', line 196
def definition_registry
definitions_registry_accessor.call
end
|
.disable(key:) ⇒ Object
117
118
119
|
# File 'lib/kaal.rb', line 117
def disable(key:)
definition_registry.disable_definition(key)
end
|
.dispatch_log_registry ⇒ Object
151
152
153
|
# File 'lib/kaal.rb', line 151
def dispatch_log_registry
dispatch_registry_accessor.registry
end
|
.dispatched?(key, fire_time) ⇒ Boolean
147
148
149
|
# File 'lib/kaal.rb', line 147
def dispatched?(key, fire_time)
dispatch_registry_accessor.dispatched?(key, fire_time)
end
|
.enable(key:) ⇒ Object
113
114
115
|
# File 'lib/kaal.rb', line 113
def enable(key:)
definition_registry.enable_definition(key)
end
|
.lease_ttl ⇒ Object
158
|
# File 'lib/kaal.rb', line 158
def lease_ttl = configuration.lease_ttl
|
.lease_ttl=(value) ⇒ Object
176
177
178
|
# File 'lib/kaal.rb', line 176
def lease_ttl=(value)
configuration.lease_ttl = value
end
|
.lint(expression) ⇒ Object
216
217
218
|
# File 'lib/kaal.rb', line 216
def lint(expression)
CronUtils.lint(expression)
end
|
.load_scheduler_file!(runtime_context: RuntimeContext.default) ⇒ Object
86
87
88
89
90
91
92
93
94
|
# File 'lib/kaal.rb', line 86
def load_scheduler_file!(runtime_context: RuntimeContext.default)
SchedulerFileLoader.new(
configuration: configuration,
definition_registry: definition_registry,
registry: registry,
logger: configuration.logger,
runtime_context: runtime_context
).load
end
|
.logger ⇒ Object
161
|
# File 'lib/kaal.rb', line 161
def logger = configuration.logger
|
.logger=(value) ⇒ Object
188
189
190
|
# File 'lib/kaal.rb', line 188
def logger=(value)
configuration.logger = value
end
|
.namespace ⇒ Object
159
|
# File 'lib/kaal.rb', line 159
def namespace = configuration.namespace
|
.namespace=(value) ⇒ Object
180
181
182
|
# File 'lib/kaal.rb', line 180
def namespace=(value)
configuration.namespace = value
end
|
.register(key:, cron:, enqueue:) ⇒ Object
82
83
84
|
# File 'lib/kaal.rb', line 82
def register(key:, cron:, enqueue:)
registration_service.call(key:, cron:, enqueue:)
end
|
.registered ⇒ Object
101
102
103
104
105
106
107
|
# File 'lib/kaal.rb', line 101
def registered
definition_registry.all_definitions.map do |definition|
key = definition[:key]
callback = registry.find(key)&.enqueue
Registry::Entry.new(key: key, cron: definition[:cron], enqueue: callback).freeze
end
end
|
.registered?(key:) ⇒ Boolean
109
110
111
|
# File 'lib/kaal.rb', line 109
def registered?(key:)
!!definition_registry.find_definition(key)
end
|
.registry ⇒ Object
45
46
47
|
# File 'lib/kaal.rb', line 45
def registry
@registry ||= Registry.new
end
|
.reset_configuration! ⇒ Object
53
54
55
56
57
58
59
|
# File 'lib/kaal.rb', line 53
def reset_configuration!
@configuration = Configuration.new
@coordinator = nil
@definition_registry = nil
@definitions_registry_accessor = nil
@dispatch_registry_accessor = nil
end
|
.reset_coordinator! ⇒ Object
68
69
70
71
72
73
74
75
76
|
# File 'lib/kaal.rb', line 68
def reset_coordinator!
if @coordinator&.running?
stopped = @coordinator.stop!
raise 'Failed to stop coordinator thread within timeout' unless stopped
end
@coordinator = nil
coordinator
end
|
.reset_registry! ⇒ Object
61
62
63
64
65
66
|
# File 'lib/kaal.rb', line 61
def reset_registry!
@registry = Registry.new
definition_registry = @definition_registry
definition_registry.clear if definition_registry.respond_to?(:clear)
@coordinator = nil
end
|
.restart! ⇒ Object
133
134
135
|
# File 'lib/kaal.rb', line 133
def restart!
coordinator.restart!
end
|
.running? ⇒ Boolean
129
130
131
|
# File 'lib/kaal.rb', line 129
def running?
coordinator.running?
end
|
.simplify(expression) ⇒ Object
212
213
214
|
# File 'lib/kaal.rb', line 212
def simplify(expression)
CronUtils.simplify(expression)
end
|
.start! ⇒ Object
121
122
123
|
# File 'lib/kaal.rb', line 121
def start!
coordinator.start!
end
|
.stop!(timeout: 30) ⇒ Object
125
126
127
|
# File 'lib/kaal.rb', line 125
def stop!(timeout: 30)
coordinator.stop!(timeout: timeout)
end
|
.tick! ⇒ Object
137
138
139
|
# File 'lib/kaal.rb', line 137
def tick!
coordinator.tick!
end
|
.tick_interval ⇒ Object
155
|
# File 'lib/kaal.rb', line 155
def tick_interval = configuration.tick_interval
|
.tick_interval=(value) ⇒ Object
164
165
166
|
# File 'lib/kaal.rb', line 164
def tick_interval=(value)
configuration.tick_interval = value
end
|
.time_zone ⇒ Object
162
|
# File 'lib/kaal.rb', line 162
def time_zone = configuration.time_zone
|
.time_zone=(value) ⇒ Object
192
193
194
|
# File 'lib/kaal.rb', line 192
def time_zone=(value)
configuration.time_zone = value
end
|
.to_human(expression, locale: nil) ⇒ Object
220
221
222
|
# File 'lib/kaal.rb', line 220
def to_human(expression, locale: nil)
CronHumanizer.to_human(expression, locale: locale)
end
|
.unregister(key:) ⇒ Object
96
97
98
99
|
# File 'lib/kaal.rb', line 96
def unregister(key:)
definition_registry.remove_definition(key)
registry.remove(key)
end
|
.valid?(expression) ⇒ Boolean
208
209
210
|
# File 'lib/kaal.rb', line 208
def valid?(expression)
CronUtils.valid?(expression)
end
|
.validate ⇒ Object
200
201
202
|
# File 'lib/kaal.rb', line 200
def validate
configuration.validate
end
|
.validate! ⇒ Object
204
205
206
|
# File 'lib/kaal.rb', line 204
def validate!
configuration.validate!
end
|
.window_lookahead ⇒ Object
157
|
# File 'lib/kaal.rb', line 157
def window_lookahead = configuration.window_lookahead
|
.window_lookahead=(value) ⇒ Object
172
173
174
|
# File 'lib/kaal.rb', line 172
def window_lookahead=(value)
configuration.window_lookahead = value
end
|
.window_lookback ⇒ Object
156
|
# File 'lib/kaal.rb', line 156
def window_lookback = configuration.window_lookback
|
.window_lookback=(value) ⇒ Object
168
169
170
|
# File 'lib/kaal.rb', line 168
def window_lookback=(value)
configuration.window_lookback = value
end
|
.with_idempotency(key, fire_time) {|IdempotencyKeyGenerator.call(key, fire_time, configuration: configuration)| ... } ⇒ Object
141
142
143
144
145
|
# File 'lib/kaal.rb', line 141
def with_idempotency(key, fire_time)
raise ArgumentError, 'block required' unless block_given?
yield(IdempotencyKeyGenerator.call(key, fire_time, configuration: configuration))
end
|