tasker-engine 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (605) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE +22 -0
  3. data/README.md +443 -0
  4. data/Rakefile +10 -0
  5. data/app/controllers/tasker/analytics_controller.rb +179 -0
  6. data/app/controllers/tasker/application_controller.rb +45 -0
  7. data/app/controllers/tasker/graphql_controller.rb +193 -0
  8. data/app/controllers/tasker/handlers_controller.rb +217 -0
  9. data/app/controllers/tasker/health_controller.rb +229 -0
  10. data/app/controllers/tasker/metrics_controller.rb +111 -0
  11. data/app/controllers/tasker/page_sort.rb +97 -0
  12. data/app/controllers/tasker/task_diagrams_controller.rb +30 -0
  13. data/app/controllers/tasker/tasks_controller.rb +123 -0
  14. data/app/controllers/tasker/workflow_steps_controller.rb +69 -0
  15. data/app/graphql/examples/all_tasks.graphql +22 -0
  16. data/app/graphql/examples/pending_tasks.graphql +23 -0
  17. data/app/graphql/tasker/graph_ql_types/annotation_type.rb +14 -0
  18. data/app/graphql/tasker/graph_ql_types/base_argument.rb +9 -0
  19. data/app/graphql/tasker/graph_ql_types/base_connection.rb +11 -0
  20. data/app/graphql/tasker/graph_ql_types/base_edge.rb +10 -0
  21. data/app/graphql/tasker/graph_ql_types/base_enum.rb +9 -0
  22. data/app/graphql/tasker/graph_ql_types/base_field.rb +10 -0
  23. data/app/graphql/tasker/graph_ql_types/base_input_object.rb +10 -0
  24. data/app/graphql/tasker/graph_ql_types/base_interface.rb +14 -0
  25. data/app/graphql/tasker/graph_ql_types/base_object.rb +10 -0
  26. data/app/graphql/tasker/graph_ql_types/base_scalar.rb +9 -0
  27. data/app/graphql/tasker/graph_ql_types/base_union.rb +11 -0
  28. data/app/graphql/tasker/graph_ql_types/dependent_system_object_map_type.rb +18 -0
  29. data/app/graphql/tasker/graph_ql_types/dependent_system_type.rb +13 -0
  30. data/app/graphql/tasker/graph_ql_types/mutation_type.rb +16 -0
  31. data/app/graphql/tasker/graph_ql_types/named_step_type.rb +16 -0
  32. data/app/graphql/tasker/graph_ql_types/named_task_type.rb +14 -0
  33. data/app/graphql/tasker/graph_ql_types/named_tasks_named_step_type.rb +19 -0
  34. data/app/graphql/tasker/graph_ql_types/node_type.rb +12 -0
  35. data/app/graphql/tasker/graph_ql_types/query_type.rb +20 -0
  36. data/app/graphql/tasker/graph_ql_types/task_annotation_type.rb +17 -0
  37. data/app/graphql/tasker/graph_ql_types/task_interface.rb +17 -0
  38. data/app/graphql/tasker/graph_ql_types/task_type.rb +26 -0
  39. data/app/graphql/tasker/graph_ql_types/workflow_step_type.rb +154 -0
  40. data/app/graphql/tasker/graph_ql_types.rb +42 -0
  41. data/app/graphql/tasker/mutations/base_mutation.rb +13 -0
  42. data/app/graphql/tasker/mutations/cancel_step.rb +29 -0
  43. data/app/graphql/tasker/mutations/cancel_task.rb +29 -0
  44. data/app/graphql/tasker/mutations/create_task.rb +52 -0
  45. data/app/graphql/tasker/mutations/update_step.rb +36 -0
  46. data/app/graphql/tasker/mutations/update_task.rb +41 -0
  47. data/app/graphql/tasker/queries/all_annotation_types.rb +17 -0
  48. data/app/graphql/tasker/queries/all_tasks.rb +23 -0
  49. data/app/graphql/tasker/queries/base_query.rb +9 -0
  50. data/app/graphql/tasker/queries/helpers.rb +16 -0
  51. data/app/graphql/tasker/queries/one_step.rb +24 -0
  52. data/app/graphql/tasker/queries/one_task.rb +18 -0
  53. data/app/graphql/tasker/queries/tasks_by_annotation.rb +31 -0
  54. data/app/graphql/tasker/queries/tasks_by_status.rb +30 -0
  55. data/app/graphql/tasker/tasker_rails_schema.rb +52 -0
  56. data/app/jobs/tasker/application_job.rb +8 -0
  57. data/app/jobs/tasker/metrics_export_job.rb +252 -0
  58. data/app/jobs/tasker/task_runner_job.rb +224 -0
  59. data/app/models/tasker/annotation_type.rb +26 -0
  60. data/app/models/tasker/application_record.rb +70 -0
  61. data/app/models/tasker/dependent_system.rb +26 -0
  62. data/app/models/tasker/dependent_system_object_map.rb +64 -0
  63. data/app/models/tasker/diagram/edge.rb +106 -0
  64. data/app/models/tasker/diagram/flowchart.rb +137 -0
  65. data/app/models/tasker/diagram/node.rb +99 -0
  66. data/app/models/tasker/named_step.rb +41 -0
  67. data/app/models/tasker/named_task.rb +121 -0
  68. data/app/models/tasker/named_tasks_named_step.rb +82 -0
  69. data/app/models/tasker/step_dag_relationship.rb +65 -0
  70. data/app/models/tasker/step_readiness_status.rb +59 -0
  71. data/app/models/tasker/task.rb +424 -0
  72. data/app/models/tasker/task_annotation.rb +36 -0
  73. data/app/models/tasker/task_diagram.rb +332 -0
  74. data/app/models/tasker/task_execution_context.rb +29 -0
  75. data/app/models/tasker/task_namespace.rb +41 -0
  76. data/app/models/tasker/task_transition.rb +235 -0
  77. data/app/models/tasker/workflow_step.rb +461 -0
  78. data/app/models/tasker/workflow_step_edge.rb +94 -0
  79. data/app/models/tasker/workflow_step_transition.rb +434 -0
  80. data/app/serializers/tasker/annotation_type_serializer.rb +8 -0
  81. data/app/serializers/tasker/handler_serializer.rb +109 -0
  82. data/app/serializers/tasker/task_annotation_serializer.rb +32 -0
  83. data/app/serializers/tasker/task_serializer.rb +168 -0
  84. data/app/serializers/tasker/workflow_step_serializer.rb +27 -0
  85. data/app/services/tasker/analytics_service.rb +409 -0
  86. data/app/views/tasker/task/_diagram.html.erb +32 -0
  87. data/config/initializers/dry_struct.rb +11 -0
  88. data/config/initializers/statesman.rb +6 -0
  89. data/config/initializers/tasker_orchestration.rb +17 -0
  90. data/config/initializers/time_formats.rb +4 -0
  91. data/config/routes.rb +34 -0
  92. data/config/tasker/subscriptions/example_integrations.yml +67 -0
  93. data/config/tasker/system_events.yml +305 -0
  94. data/db/functions/calculate_dependency_levels_v01.sql +45 -0
  95. data/db/functions/get_analytics_metrics_v01.sql +137 -0
  96. data/db/functions/get_slowest_steps_v01.sql +82 -0
  97. data/db/functions/get_slowest_tasks_v01.sql +96 -0
  98. data/db/functions/get_step_readiness_status_batch_v01.sql +140 -0
  99. data/db/functions/get_step_readiness_status_v01.sql +139 -0
  100. data/db/functions/get_system_health_counts_v01.sql +108 -0
  101. data/db/functions/get_task_execution_context_v01.sql +108 -0
  102. data/db/functions/get_task_execution_contexts_batch_v01.sql +104 -0
  103. data/db/init/schema.sql +2277 -0
  104. data/db/migrate/20250701165431_initial_tasker_schema.rb +116 -0
  105. data/db/views/tasker_step_dag_relationships_v01.sql +69 -0
  106. data/docs/APPLICATION_GENERATOR.md +384 -0
  107. data/docs/AUTH.md +1780 -0
  108. data/docs/CIRCUIT_BREAKER.md +224 -0
  109. data/docs/DEVELOPER_GUIDE.md +2665 -0
  110. data/docs/EVENT_SYSTEM.md +637 -0
  111. data/docs/EXECUTION_CONFIGURATION.md +341 -0
  112. data/docs/FLOW_CHART.md +149 -0
  113. data/docs/HEALTH.md +542 -0
  114. data/docs/METRICS.md +731 -0
  115. data/docs/OPTIMIZATION_PLAN.md +1479 -0
  116. data/docs/OVERVIEW.md +552 -0
  117. data/docs/QUICK_START.md +270 -0
  118. data/docs/REGISTRY_SYSTEMS.md +373 -0
  119. data/docs/REST_API.md +632 -0
  120. data/docs/ROADMAP.md +221 -0
  121. data/docs/SQL_FUNCTIONS.md +1408 -0
  122. data/docs/TASK_DIAGRAM.md +252 -0
  123. data/docs/TASK_EXECUTION_CONTROL_FLOW.md +237 -0
  124. data/docs/TELEMETRY.md +795 -0
  125. data/docs/TROUBLESHOOTING.md +756 -0
  126. data/docs/TaskHandlerGenerator.html +255 -0
  127. data/docs/Tasker/Analysis/RuntimeGraphAnalyzer.html +907 -0
  128. data/docs/Tasker/Analysis/TemplateGraphAnalyzer.html +1236 -0
  129. data/docs/Tasker/Analysis.html +117 -0
  130. data/docs/Tasker/AnalyticsController.html +450 -0
  131. data/docs/Tasker/AnalyticsService/BottleneckAnalytics.html +816 -0
  132. data/docs/Tasker/AnalyticsService/PerformanceAnalytics.html +586 -0
  133. data/docs/Tasker/AnalyticsService.html +2221 -0
  134. data/docs/Tasker/AnnotationType.html +137 -0
  135. data/docs/Tasker/AnnotationTypeSerializer.html +124 -0
  136. data/docs/Tasker/ApplicationController.html +147 -0
  137. data/docs/Tasker/ApplicationJob.html +128 -0
  138. data/docs/Tasker/ApplicationRecord.html +378 -0
  139. data/docs/Tasker/Authentication/AuthenticationError.html +124 -0
  140. data/docs/Tasker/Authentication/ConfigurationError.html +124 -0
  141. data/docs/Tasker/Authentication/Coordinator.html +242 -0
  142. data/docs/Tasker/Authentication/Interface.html +560 -0
  143. data/docs/Tasker/Authentication/InterfaceError.html +124 -0
  144. data/docs/Tasker/Authentication/NoneAuthenticator.html +338 -0
  145. data/docs/Tasker/Authentication.html +119 -0
  146. data/docs/Tasker/Authorization/AuthorizationError.html +139 -0
  147. data/docs/Tasker/Authorization/BaseCoordinator.html +927 -0
  148. data/docs/Tasker/Authorization/ConfigurationError.html +153 -0
  149. data/docs/Tasker/Authorization/ResourceConstants/ACTIONS.html +428 -0
  150. data/docs/Tasker/Authorization/ResourceConstants/RESOURCES.html +365 -0
  151. data/docs/Tasker/Authorization/ResourceConstants.html +146 -0
  152. data/docs/Tasker/Authorization/ResourceRegistry.html +882 -0
  153. data/docs/Tasker/Authorization/UnauthorizedError.html +153 -0
  154. data/docs/Tasker/Authorization.html +582 -0
  155. data/docs/Tasker/CacheCapabilities.html +167 -0
  156. data/docs/Tasker/CacheStrategy.html +1297 -0
  157. data/docs/Tasker/Concerns/Authenticatable.html +116 -0
  158. data/docs/Tasker/Concerns/Authorizable/AdminStatusChecker.html +256 -0
  159. data/docs/Tasker/Concerns/Authorizable.html +816 -0
  160. data/docs/Tasker/Concerns/ControllerAuthorizable.html +157 -0
  161. data/docs/Tasker/Concerns/EventPublisher.html +4023 -0
  162. data/docs/Tasker/Concerns/IdempotentStateTransitions.html +806 -0
  163. data/docs/Tasker/Concerns/LifecycleEventHelpers.html +129 -0
  164. data/docs/Tasker/Concerns/OrchestrationPublisher.html +129 -0
  165. data/docs/Tasker/Concerns/StateMachineBase/ClassMethods.html +1075 -0
  166. data/docs/Tasker/Concerns/StateMachineBase/StateMachineBase/ClassMethods.html +191 -0
  167. data/docs/Tasker/Concerns/StateMachineBase/StateMachineBase.html +126 -0
  168. data/docs/Tasker/Concerns/StateMachineBase.html +153 -0
  169. data/docs/Tasker/Concerns/StructuredLogging.html +1413 -0
  170. data/docs/Tasker/Concerns.html +117 -0
  171. data/docs/Tasker/Configuration/AuthConfiguration.html +1023 -0
  172. data/docs/Tasker/Configuration/ConfigurationProxy.html +581 -0
  173. data/docs/Tasker/Configuration/DatabaseConfiguration.html +475 -0
  174. data/docs/Tasker/Configuration/EngineConfiguration.html +1265 -0
  175. data/docs/Tasker/Configuration/HealthConfiguration.html +791 -0
  176. data/docs/Tasker/Configuration/TelemetryConfiguration.html +1308 -0
  177. data/docs/Tasker/Configuration/TelemetryConfigurationProxy.html +388 -0
  178. data/docs/Tasker/Configuration.html +1669 -0
  179. data/docs/Tasker/ConfigurationError.html +143 -0
  180. data/docs/Tasker/ConfiguredTask.html +514 -0
  181. data/docs/Tasker/Constants/EventDefinitions.html +590 -0
  182. data/docs/Tasker/Constants/LifecycleEvents.html +137 -0
  183. data/docs/Tasker/Constants/ObservabilityEvents/Step.html +152 -0
  184. data/docs/Tasker/Constants/ObservabilityEvents/Task.html +142 -0
  185. data/docs/Tasker/Constants/ObservabilityEvents.html +126 -0
  186. data/docs/Tasker/Constants/RegistryEvents.html +285 -0
  187. data/docs/Tasker/Constants/StepEvents.html +177 -0
  188. data/docs/Tasker/Constants/TaskEvents.html +167 -0
  189. data/docs/Tasker/Constants/TaskExecution/ExecutionStatus.html +207 -0
  190. data/docs/Tasker/Constants/TaskExecution/HealthStatus.html +191 -0
  191. data/docs/Tasker/Constants/TaskExecution/RecommendedAction.html +207 -0
  192. data/docs/Tasker/Constants/TaskExecution.html +126 -0
  193. data/docs/Tasker/Constants/TaskFinalization/ErrorMessages.html +132 -0
  194. data/docs/Tasker/Constants/TaskFinalization/PendingReasons.html +207 -0
  195. data/docs/Tasker/Constants/TaskFinalization/ReenqueueReasons.html +239 -0
  196. data/docs/Tasker/Constants/TaskFinalization.html +126 -0
  197. data/docs/Tasker/Constants/TaskStatuses.html +223 -0
  198. data/docs/Tasker/Constants/TestEvents.html +163 -0
  199. data/docs/Tasker/Constants/WorkflowEvents.html +222 -0
  200. data/docs/Tasker/Constants/WorkflowStepStatuses.html +223 -0
  201. data/docs/Tasker/Constants.html +561 -0
  202. data/docs/Tasker/DependentSystem.html +137 -0
  203. data/docs/Tasker/DependentSystemObjectMap.html +250 -0
  204. data/docs/Tasker/DetectorRegistry.html +598 -0
  205. data/docs/Tasker/Diagram/Edge.html +1191 -0
  206. data/docs/Tasker/Diagram/Flowchart.html +1539 -0
  207. data/docs/Tasker/Diagram/Node.html +1165 -0
  208. data/docs/Tasker/Diagram.html +117 -0
  209. data/docs/Tasker/Engine.html +215 -0
  210. data/docs/Tasker/Error.html +139 -0
  211. data/docs/Tasker/Events/Bus.html +1226 -0
  212. data/docs/Tasker/Events/Catalog/CatalogPrinter.html +258 -0
  213. data/docs/Tasker/Events/Catalog/CustomEventRegistrar.html +276 -0
  214. data/docs/Tasker/Events/Catalog/ExamplePayloadGenerator.html +294 -0
  215. data/docs/Tasker/Events/Catalog.html +1291 -0
  216. data/docs/Tasker/Events/CustomRegistry.html +943 -0
  217. data/docs/Tasker/Events/DefinitionLoader.html +575 -0
  218. data/docs/Tasker/Events/EventPayloadBuilder/ErrorInfoExtractor.html +286 -0
  219. data/docs/Tasker/Events/EventPayloadBuilder/StepPayloadBuilder.html +312 -0
  220. data/docs/Tasker/Events/EventPayloadBuilder.html +664 -0
  221. data/docs/Tasker/Events/Publisher.html +365 -0
  222. data/docs/Tasker/Events/Subscribers/BaseSubscriber/ErrorCategorizer/ErrorTypeClassifier.html +1128 -0
  223. data/docs/Tasker/Events/Subscribers/BaseSubscriber/ErrorCategorizer.html +270 -0
  224. data/docs/Tasker/Events/Subscribers/BaseSubscriber/MetricTagsExtractor.html +266 -0
  225. data/docs/Tasker/Events/Subscribers/BaseSubscriber.html +2556 -0
  226. data/docs/Tasker/Events/Subscribers/MetricsSubscriber.html +723 -0
  227. data/docs/Tasker/Events/Subscribers/TelemetrySubscriber.html +2251 -0
  228. data/docs/Tasker/Events/Subscribers.html +117 -0
  229. data/docs/Tasker/Events/SubscriptionLoader.html +493 -0
  230. data/docs/Tasker/Events.html +294 -0
  231. data/docs/Tasker/EventsGenerator.html +459 -0
  232. data/docs/Tasker/Functions/FunctionBasedAnalyticsMetrics/AnalyticsMetrics.html +135 -0
  233. data/docs/Tasker/Functions/FunctionBasedAnalyticsMetrics.html +412 -0
  234. data/docs/Tasker/Functions/FunctionBasedDependencyLevels.html +598 -0
  235. data/docs/Tasker/Functions/FunctionBasedSlowestSteps/SlowestStep.html +135 -0
  236. data/docs/Tasker/Functions/FunctionBasedSlowestSteps.html +453 -0
  237. data/docs/Tasker/Functions/FunctionBasedSlowestTasks/SlowestTask.html +135 -0
  238. data/docs/Tasker/Functions/FunctionBasedSlowestTasks.html +453 -0
  239. data/docs/Tasker/Functions/FunctionBasedStepReadinessStatus.html +1457 -0
  240. data/docs/Tasker/Functions/FunctionBasedSystemHealthCounts/HealthMetrics.html +135 -0
  241. data/docs/Tasker/Functions/FunctionBasedSystemHealthCounts.html +370 -0
  242. data/docs/Tasker/Functions/FunctionBasedTaskExecutionContext.html +1250 -0
  243. data/docs/Tasker/Functions/FunctionWrapper.html +479 -0
  244. data/docs/Tasker/Functions.html +117 -0
  245. data/docs/Tasker/Generators/AuthenticatorGenerator/UsageInstructionsFormatter.html +244 -0
  246. data/docs/Tasker/Generators/AuthenticatorGenerator.html +373 -0
  247. data/docs/Tasker/Generators/AuthorizationCoordinatorGenerator.html +430 -0
  248. data/docs/Tasker/Generators/SubscriberGenerator.html +377 -0
  249. data/docs/Tasker/Generators/TaskHandlerGenerator.html +263 -0
  250. data/docs/Tasker/Generators.html +117 -0
  251. data/docs/Tasker/GraphQLTypes/AnnotationType.html +132 -0
  252. data/docs/Tasker/GraphQLTypes/BaseArgument.html +124 -0
  253. data/docs/Tasker/GraphQLTypes/BaseConnection.html +124 -0
  254. data/docs/Tasker/GraphQLTypes/BaseEdge.html +130 -0
  255. data/docs/Tasker/GraphQLTypes/BaseEnum.html +124 -0
  256. data/docs/Tasker/GraphQLTypes/BaseField.html +124 -0
  257. data/docs/Tasker/GraphQLTypes/BaseInputObject.html +124 -0
  258. data/docs/Tasker/GraphQLTypes/BaseInterface.html +116 -0
  259. data/docs/Tasker/GraphQLTypes/BaseObject.html +128 -0
  260. data/docs/Tasker/GraphQLTypes/BaseScalar.html +124 -0
  261. data/docs/Tasker/GraphQLTypes/BaseUnion.html +124 -0
  262. data/docs/Tasker/GraphQLTypes/DependentSystemObjectMapType.html +132 -0
  263. data/docs/Tasker/GraphQLTypes/DependentSystemType.html +132 -0
  264. data/docs/Tasker/GraphQLTypes/MutationType.html +132 -0
  265. data/docs/Tasker/GraphQLTypes/NamedStepType.html +132 -0
  266. data/docs/Tasker/GraphQLTypes/NamedTaskType.html +132 -0
  267. data/docs/Tasker/GraphQLTypes/NamedTasksNamedStepType.html +132 -0
  268. data/docs/Tasker/GraphQLTypes/NodeType.html +118 -0
  269. data/docs/Tasker/GraphQLTypes/QueryType.html +139 -0
  270. data/docs/Tasker/GraphQLTypes/TaskAnnotationType.html +132 -0
  271. data/docs/Tasker/GraphQLTypes/TaskInterface.html +111 -0
  272. data/docs/Tasker/GraphQLTypes/TaskType.html +201 -0
  273. data/docs/Tasker/GraphQLTypes/WorkflowStepType.html +694 -0
  274. data/docs/Tasker/GraphQLTypes.html +130 -0
  275. data/docs/Tasker/GraphqlController.html +251 -0
  276. data/docs/Tasker/HandlerFactory.html +1518 -0
  277. data/docs/Tasker/HandlerSerializer.html +682 -0
  278. data/docs/Tasker/HandlersController.html +574 -0
  279. data/docs/Tasker/HashIdentityStrategy.html +278 -0
  280. data/docs/Tasker/Health/ReadinessChecker.html +712 -0
  281. data/docs/Tasker/Health/StatusChecker.html +653 -0
  282. data/docs/Tasker/Health.html +117 -0
  283. data/docs/Tasker/HealthController.html +523 -0
  284. data/docs/Tasker/IdentityStrategy.html +276 -0
  285. data/docs/Tasker/InvalidTaskHandlerConfig.html +135 -0
  286. data/docs/Tasker/LifecycleEvents/Events/Step.html +162 -0
  287. data/docs/Tasker/LifecycleEvents/Events/Task.html +162 -0
  288. data/docs/Tasker/LifecycleEvents/Events.html +204 -0
  289. data/docs/Tasker/LifecycleEvents/Publisher.html +132 -0
  290. data/docs/Tasker/LifecycleEvents.html +799 -0
  291. data/docs/Tasker/Logging/CorrelationIdGenerator.html +688 -0
  292. data/docs/Tasker/Logging.html +115 -0
  293. data/docs/Tasker/MetricsController.html +293 -0
  294. data/docs/Tasker/MetricsExportJob.html +414 -0
  295. data/docs/Tasker/Mutations/BaseMutation.html +128 -0
  296. data/docs/Tasker/Mutations/CancelStep.html +219 -0
  297. data/docs/Tasker/Mutations/CancelTask.html +221 -0
  298. data/docs/Tasker/Mutations/CreateTask.html +243 -0
  299. data/docs/Tasker/Mutations/UpdateStep.html +243 -0
  300. data/docs/Tasker/Mutations/UpdateTask.html +243 -0
  301. data/docs/Tasker/Mutations.html +117 -0
  302. data/docs/Tasker/NamedStep.html +216 -0
  303. data/docs/Tasker/NamedTask.html +910 -0
  304. data/docs/Tasker/NamedTasksNamedStep.html +435 -0
  305. data/docs/Tasker/Orchestration/BackoffCalculator.html +404 -0
  306. data/docs/Tasker/Orchestration/ConnectionBuilder/ConfigValidator.html +258 -0
  307. data/docs/Tasker/Orchestration/ConnectionBuilder.html +435 -0
  308. data/docs/Tasker/Orchestration/ConnectionPoolIntelligence.html +513 -0
  309. data/docs/Tasker/Orchestration/Coordinator.html +641 -0
  310. data/docs/Tasker/Orchestration/FutureStateAnalyzer.html +1045 -0
  311. data/docs/Tasker/Orchestration/Orchestrator.html +679 -0
  312. data/docs/Tasker/Orchestration/PluginIntegration.html +1127 -0
  313. data/docs/Tasker/Orchestration/ResponseProcessor.html +504 -0
  314. data/docs/Tasker/Orchestration/RetryHeaderParser.html +304 -0
  315. data/docs/Tasker/Orchestration/StepExecutor.html +995 -0
  316. data/docs/Tasker/Orchestration/StepSequenceFactory.html +644 -0
  317. data/docs/Tasker/Orchestration/TaskFinalizer/BlockageChecker.html +264 -0
  318. data/docs/Tasker/Orchestration/TaskFinalizer/ContextManager.html +254 -0
  319. data/docs/Tasker/Orchestration/TaskFinalizer/DelayCalculator.html +556 -0
  320. data/docs/Tasker/Orchestration/TaskFinalizer/FinalizationDecisionMaker.html +348 -0
  321. data/docs/Tasker/Orchestration/TaskFinalizer/FinalizationProcessor.html +286 -0
  322. data/docs/Tasker/Orchestration/TaskFinalizer/ReasonDeterminer.html +432 -0
  323. data/docs/Tasker/Orchestration/TaskFinalizer/ReenqueueManager.html +296 -0
  324. data/docs/Tasker/Orchestration/TaskFinalizer/UnclearStateHandler.html +314 -0
  325. data/docs/Tasker/Orchestration/TaskFinalizer.html +1212 -0
  326. data/docs/Tasker/Orchestration/TaskInitializer.html +766 -0
  327. data/docs/Tasker/Orchestration/TaskReenqueuer.html +506 -0
  328. data/docs/Tasker/Orchestration/ViableStepDiscovery.html +442 -0
  329. data/docs/Tasker/Orchestration/WorkflowCoordinator.html +510 -0
  330. data/docs/Tasker/Orchestration.html +130 -0
  331. data/docs/Tasker/PageSort/PageSortParamsBuilder.html +296 -0
  332. data/docs/Tasker/PageSort.html +247 -0
  333. data/docs/Tasker/PermanentError.html +518 -0
  334. data/docs/Tasker/ProceduralError.html +147 -0
  335. data/docs/Tasker/Queries/AllAnnotationTypes.html +217 -0
  336. data/docs/Tasker/Queries/AllTasks.html +221 -0
  337. data/docs/Tasker/Queries/BaseQuery.html +128 -0
  338. data/docs/Tasker/Queries/Helpers.html +187 -0
  339. data/docs/Tasker/Queries/OneStep.html +225 -0
  340. data/docs/Tasker/Queries/OneTask.html +217 -0
  341. data/docs/Tasker/Queries/TasksByAnnotation.html +231 -0
  342. data/docs/Tasker/Queries/TasksByStatus.html +233 -0
  343. data/docs/Tasker/Queries.html +119 -0
  344. data/docs/Tasker/Railtie.html +124 -0
  345. data/docs/Tasker/Registry/BaseRegistry.html +1690 -0
  346. data/docs/Tasker/Registry/EventPublisher.html +667 -0
  347. data/docs/Tasker/Registry/InterfaceValidator.html +569 -0
  348. data/docs/Tasker/Registry/RegistrationError.html +132 -0
  349. data/docs/Tasker/Registry/RegistryError.html +139 -0
  350. data/docs/Tasker/Registry/StatisticsCollector.html +841 -0
  351. data/docs/Tasker/Registry/SubscriberRegistry.html +1504 -0
  352. data/docs/Tasker/Registry/ValidationError.html +132 -0
  353. data/docs/Tasker/Registry.html +119 -0
  354. data/docs/Tasker/RetryableError.html +515 -0
  355. data/docs/Tasker/StateMachine/Compatibility.html +282 -0
  356. data/docs/Tasker/StateMachine/InvalidStateTransition.html +135 -0
  357. data/docs/Tasker/StateMachine/StepStateMachine/StandardizedPayloadBuilder.html +260 -0
  358. data/docs/Tasker/StateMachine/StepStateMachine.html +2215 -0
  359. data/docs/Tasker/StateMachine/TaskStateMachine.html +734 -0
  360. data/docs/Tasker/StateMachine.html +602 -0
  361. data/docs/Tasker/StepDagRelationship.html +657 -0
  362. data/docs/Tasker/StepHandler/Api/Config.html +1091 -0
  363. data/docs/Tasker/StepHandler/Api.html +884 -0
  364. data/docs/Tasker/StepHandler/AutomaticEventPublishing.html +321 -0
  365. data/docs/Tasker/StepHandler/Base.html +970 -0
  366. data/docs/Tasker/StepHandler.html +119 -0
  367. data/docs/Tasker/StepReadinessStatus.html +836 -0
  368. data/docs/Tasker/Task.html +2575 -0
  369. data/docs/Tasker/TaskAnnotation.html +137 -0
  370. data/docs/Tasker/TaskAnnotationSerializer.html +124 -0
  371. data/docs/Tasker/TaskBuilder/StepNameValidator.html +264 -0
  372. data/docs/Tasker/TaskBuilder/StepTemplateDefiner.html +264 -0
  373. data/docs/Tasker/TaskBuilder.html +764 -0
  374. data/docs/Tasker/TaskDiagram/StepToStepEdgeBuilder.html +260 -0
  375. data/docs/Tasker/TaskDiagram/TaskToRootStepEdgeBuilder.html +290 -0
  376. data/docs/Tasker/TaskDiagram.html +548 -0
  377. data/docs/Tasker/TaskDiagramsController.html +240 -0
  378. data/docs/Tasker/TaskExecutionContext.html +469 -0
  379. data/docs/Tasker/TaskHandler/ClassMethods/StepTemplateDefiner/ClassBasedEventRegistrar.html +238 -0
  380. data/docs/Tasker/TaskHandler/ClassMethods/StepTemplateDefiner/YamlEventRegistrar.html +254 -0
  381. data/docs/Tasker/TaskHandler/ClassMethods/StepTemplateDefiner.html +988 -0
  382. data/docs/Tasker/TaskHandler/ClassMethods.html +357 -0
  383. data/docs/Tasker/TaskHandler/InstanceMethods.html +1396 -0
  384. data/docs/Tasker/TaskHandler/StepGroup.html +1748 -0
  385. data/docs/Tasker/TaskHandler.html +271 -0
  386. data/docs/Tasker/TaskNamespace.html +312 -0
  387. data/docs/Tasker/TaskRunnerJob.html +406 -0
  388. data/docs/Tasker/TaskSerializer.html +474 -0
  389. data/docs/Tasker/TaskTransition.html +1517 -0
  390. data/docs/Tasker/TaskWorkflowSummary.html +988 -0
  391. data/docs/Tasker/TaskerRailsSchema/InvalidObjectTypeError.html +132 -0
  392. data/docs/Tasker/TaskerRailsSchema/TypeResolutionError.html +139 -0
  393. data/docs/Tasker/TaskerRailsSchema/UnknownInterfaceError.html +132 -0
  394. data/docs/Tasker/TaskerRailsSchema.html +384 -0
  395. data/docs/Tasker/TasksController.html +595 -0
  396. data/docs/Tasker/Telemetry/EventMapping.html +1307 -0
  397. data/docs/Tasker/Telemetry/EventRouter.html +2178 -0
  398. data/docs/Tasker/Telemetry/Events/ExportEvents.html +246 -0
  399. data/docs/Tasker/Telemetry/Events.html +115 -0
  400. data/docs/Tasker/Telemetry/ExportCoordinator/DistributedLockTimeoutError.html +135 -0
  401. data/docs/Tasker/Telemetry/ExportCoordinator.html +2137 -0
  402. data/docs/Tasker/Telemetry/IntelligentCacheManager.html +1083 -0
  403. data/docs/Tasker/Telemetry/LogBackend.html +1088 -0
  404. data/docs/Tasker/Telemetry/MetricTypes/Counter.html +1054 -0
  405. data/docs/Tasker/Telemetry/MetricTypes/Gauge.html +1270 -0
  406. data/docs/Tasker/Telemetry/MetricTypes/Histogram.html +1492 -0
  407. data/docs/Tasker/Telemetry/MetricTypes.html +153 -0
  408. data/docs/Tasker/Telemetry/MetricsBackend.html +2510 -0
  409. data/docs/Tasker/Telemetry/MetricsExportService.html +578 -0
  410. data/docs/Tasker/Telemetry/PluginRegistry.html +1774 -0
  411. data/docs/Tasker/Telemetry/Plugins/BaseExporter.html +1835 -0
  412. data/docs/Tasker/Telemetry/Plugins/CsvExporter.html +768 -0
  413. data/docs/Tasker/Telemetry/Plugins/JsonExporter.html +747 -0
  414. data/docs/Tasker/Telemetry/Plugins.html +117 -0
  415. data/docs/Tasker/Telemetry/PrometheusExporter.html +481 -0
  416. data/docs/Tasker/Telemetry/TraceBackend.html +891 -0
  417. data/docs/Tasker/Telemetry.html +130 -0
  418. data/docs/Tasker/Types/AuthConfig.html +886 -0
  419. data/docs/Tasker/Types/BackoffConfig.html +1063 -0
  420. data/docs/Tasker/Types/BaseConfig.html +227 -0
  421. data/docs/Tasker/Types/CacheConfig.html +1731 -0
  422. data/docs/Tasker/Types/DatabaseConfig.html +388 -0
  423. data/docs/Tasker/Types/DependencyGraph.html +526 -0
  424. data/docs/Tasker/Types/DependencyGraphConfig.html +753 -0
  425. data/docs/Tasker/Types/EngineConfig.html +1181 -0
  426. data/docs/Tasker/Types/ExecutionConfig.html +1963 -0
  427. data/docs/Tasker/Types/GraphEdge.html +517 -0
  428. data/docs/Tasker/Types/GraphMetadata.html +781 -0
  429. data/docs/Tasker/Types/GraphNode.html +694 -0
  430. data/docs/Tasker/Types/HealthConfig.html +784 -0
  431. data/docs/Tasker/Types/StepSequence.html +353 -0
  432. data/docs/Tasker/Types/StepTemplate.html +1193 -0
  433. data/docs/Tasker/Types/TaskRequest.html +1179 -0
  434. data/docs/Tasker/Types/TelemetryConfig.html +2746 -0
  435. data/docs/Tasker/Types.html +154 -0
  436. data/docs/Tasker/WorkflowStep/StepFinder.html +282 -0
  437. data/docs/Tasker/WorkflowStep.html +2724 -0
  438. data/docs/Tasker/WorkflowStepEdge.html +304 -0
  439. data/docs/Tasker/WorkflowStepSerializer.html +305 -0
  440. data/docs/Tasker/WorkflowStepTransition/TransitionDescriptionFormatter.html +282 -0
  441. data/docs/Tasker/WorkflowStepTransition.html +2201 -0
  442. data/docs/Tasker/WorkflowStepsController.html +462 -0
  443. data/docs/Tasker.html +452 -0
  444. data/docs/VISION.md +584 -0
  445. data/docs/WHY.md +21 -0
  446. data/docs/_index.html +2375 -0
  447. data/docs/class_list.html +54 -0
  448. data/docs/css/common.css +1 -0
  449. data/docs/css/full_list.css +58 -0
  450. data/docs/css/style.css +503 -0
  451. data/docs/events/migration_plan_outcomes.md +80 -0
  452. data/docs/file.README.html +541 -0
  453. data/docs/file_list.html +59 -0
  454. data/docs/frames.html +22 -0
  455. data/docs/index.html +541 -0
  456. data/docs/js/app.js +344 -0
  457. data/docs/js/full_list.js +242 -0
  458. data/docs/js/jquery.js +4 -0
  459. data/docs/method_list.html +9182 -0
  460. data/docs/top-level-namespace.html +110 -0
  461. data/lib/generators/tasker/authenticator_generator.rb +301 -0
  462. data/lib/generators/tasker/authorization_coordinator_generator.rb +139 -0
  463. data/lib/generators/tasker/events_generator.rb +91 -0
  464. data/lib/generators/tasker/subscriber_generator.rb +107 -0
  465. data/lib/generators/tasker/task_handler_generator.rb +138 -0
  466. data/lib/generators/tasker/templates/api_token_authenticator.rb.erb +113 -0
  467. data/lib/generators/tasker/templates/api_token_authenticator_spec.rb.erb +144 -0
  468. data/lib/generators/tasker/templates/authorization_coordinator.rb.erb +95 -0
  469. data/lib/generators/tasker/templates/authorization_coordinator_spec.rb.erb +142 -0
  470. data/lib/generators/tasker/templates/custom_authenticator.rb.erb +108 -0
  471. data/lib/generators/tasker/templates/custom_authenticator_spec.rb.erb +162 -0
  472. data/lib/generators/tasker/templates/custom_events.yml.erb +62 -0
  473. data/lib/generators/tasker/templates/custom_subscriber.rb.erb +72 -0
  474. data/lib/generators/tasker/templates/devise_authenticator.rb.erb +101 -0
  475. data/lib/generators/tasker/templates/devise_authenticator_spec.rb.erb +126 -0
  476. data/lib/generators/tasker/templates/initialize.rb.erb +202 -0
  477. data/lib/generators/tasker/templates/jwt_authenticator.rb.erb +144 -0
  478. data/lib/generators/tasker/templates/jwt_authenticator_spec.rb.erb +298 -0
  479. data/lib/generators/tasker/templates/metrics_subscriber.rb.erb +258 -0
  480. data/lib/generators/tasker/templates/metrics_subscriber_spec.rb.erb +308 -0
  481. data/lib/generators/tasker/templates/omniauth_authenticator.rb.erb +135 -0
  482. data/lib/generators/tasker/templates/omniauth_authenticator_spec.rb.erb +196 -0
  483. data/lib/generators/tasker/templates/opentelemetry_initializer.rb +52 -0
  484. data/lib/generators/tasker/templates/subscriber.rb.erb +64 -0
  485. data/lib/generators/tasker/templates/subscriber_spec.rb.erb +80 -0
  486. data/lib/generators/tasker/templates/task_config.yaml.erb +117 -0
  487. data/lib/generators/tasker/templates/task_handler.rb.erb +59 -0
  488. data/lib/generators/tasker/templates/task_handler_spec.rb.erb +159 -0
  489. data/lib/tasker/analysis/runtime_graph_analyzer.rb +1168 -0
  490. data/lib/tasker/analysis/template_graph_analyzer.rb +328 -0
  491. data/lib/tasker/authentication/coordinator.rb +78 -0
  492. data/lib/tasker/authentication/errors.rb +9 -0
  493. data/lib/tasker/authentication/interface.rb +36 -0
  494. data/lib/tasker/authentication/none_authenticator.rb +26 -0
  495. data/lib/tasker/authorization/base_coordinator.rb +112 -0
  496. data/lib/tasker/authorization/errors.rb +26 -0
  497. data/lib/tasker/authorization/resource_constants.rb +74 -0
  498. data/lib/tasker/authorization/resource_registry.rb +143 -0
  499. data/lib/tasker/authorization.rb +75 -0
  500. data/lib/tasker/cache_capabilities.rb +131 -0
  501. data/lib/tasker/cache_strategy.rb +469 -0
  502. data/lib/tasker/concerns/authenticatable.rb +41 -0
  503. data/lib/tasker/concerns/authorizable.rb +204 -0
  504. data/lib/tasker/concerns/controller_authorizable.rb +124 -0
  505. data/lib/tasker/concerns/event_publisher.rb +716 -0
  506. data/lib/tasker/concerns/idempotent_state_transitions.rb +128 -0
  507. data/lib/tasker/concerns/state_machine_base.rb +218 -0
  508. data/lib/tasker/concerns/structured_logging.rb +387 -0
  509. data/lib/tasker/configuration.rb +325 -0
  510. data/lib/tasker/constants/event_definitions.rb +147 -0
  511. data/lib/tasker/constants/registry_events.rb +54 -0
  512. data/lib/tasker/constants.rb +417 -0
  513. data/lib/tasker/engine.rb +90 -0
  514. data/lib/tasker/errors.rb +90 -0
  515. data/lib/tasker/events/catalog.rb +432 -0
  516. data/lib/tasker/events/custom_registry.rb +175 -0
  517. data/lib/tasker/events/definition_loader.rb +199 -0
  518. data/lib/tasker/events/event_payload_builder.rb +461 -0
  519. data/lib/tasker/events/publisher.rb +149 -0
  520. data/lib/tasker/events/subscribers/base_subscriber.rb +601 -0
  521. data/lib/tasker/events/subscribers/metrics_subscriber.rb +120 -0
  522. data/lib/tasker/events/subscribers/telemetry_subscriber.rb +462 -0
  523. data/lib/tasker/events/subscription_loader.rb +161 -0
  524. data/lib/tasker/events.rb +37 -0
  525. data/lib/tasker/functions/function_based_analytics_metrics.rb +103 -0
  526. data/lib/tasker/functions/function_based_dependency_levels.rb +54 -0
  527. data/lib/tasker/functions/function_based_slowest_steps.rb +84 -0
  528. data/lib/tasker/functions/function_based_slowest_tasks.rb +84 -0
  529. data/lib/tasker/functions/function_based_step_readiness_status.rb +183 -0
  530. data/lib/tasker/functions/function_based_system_health_counts.rb +94 -0
  531. data/lib/tasker/functions/function_based_task_execution_context.rb +148 -0
  532. data/lib/tasker/functions/function_wrapper.rb +42 -0
  533. data/lib/tasker/functions.rb +12 -0
  534. data/lib/tasker/handler_factory.rb +322 -0
  535. data/lib/tasker/health/readiness_checker.rb +186 -0
  536. data/lib/tasker/health/status_checker.rb +203 -0
  537. data/lib/tasker/identity_strategy.rb +38 -0
  538. data/lib/tasker/logging/correlation_id_generator.rb +120 -0
  539. data/lib/tasker/orchestration/backoff_calculator.rb +184 -0
  540. data/lib/tasker/orchestration/connection_builder.rb +122 -0
  541. data/lib/tasker/orchestration/connection_pool_intelligence.rb +177 -0
  542. data/lib/tasker/orchestration/coordinator.rb +119 -0
  543. data/lib/tasker/orchestration/future_state_analyzer.rb +137 -0
  544. data/lib/tasker/orchestration/plugin_integration.rb +124 -0
  545. data/lib/tasker/orchestration/response_processor.rb +168 -0
  546. data/lib/tasker/orchestration/retry_header_parser.rb +78 -0
  547. data/lib/tasker/orchestration/step_executor.rb +941 -0
  548. data/lib/tasker/orchestration/step_sequence_factory.rb +67 -0
  549. data/lib/tasker/orchestration/task_finalizer.rb +564 -0
  550. data/lib/tasker/orchestration/task_initializer.rb +140 -0
  551. data/lib/tasker/orchestration/task_reenqueuer.rb +71 -0
  552. data/lib/tasker/orchestration/viable_step_discovery.rb +65 -0
  553. data/lib/tasker/orchestration/workflow_coordinator.rb +294 -0
  554. data/lib/tasker/orchestration.rb +45 -0
  555. data/lib/tasker/railtie.rb +9 -0
  556. data/lib/tasker/registry/base_registry.rb +177 -0
  557. data/lib/tasker/registry/event_publisher.rb +91 -0
  558. data/lib/tasker/registry/interface_validator.rb +140 -0
  559. data/lib/tasker/registry/statistics_collector.rb +381 -0
  560. data/lib/tasker/registry/subscriber_registry.rb +285 -0
  561. data/lib/tasker/registry.rb +22 -0
  562. data/lib/tasker/state_machine/step_state_machine.rb +508 -0
  563. data/lib/tasker/state_machine/task_state_machine.rb +192 -0
  564. data/lib/tasker/state_machine.rb +83 -0
  565. data/lib/tasker/step_handler/api.rb +410 -0
  566. data/lib/tasker/step_handler/base.rb +206 -0
  567. data/lib/tasker/task_builder.rb +432 -0
  568. data/lib/tasker/task_handler/class_methods.rb +324 -0
  569. data/lib/tasker/task_handler/instance_methods.rb +293 -0
  570. data/lib/tasker/task_handler/step_group.rb +182 -0
  571. data/lib/tasker/task_handler.rb +43 -0
  572. data/lib/tasker/telemetry/event_mapping.rb +126 -0
  573. data/lib/tasker/telemetry/event_router.rb +318 -0
  574. data/lib/tasker/telemetry/events/export_events.rb +38 -0
  575. data/lib/tasker/telemetry/export_coordinator.rb +497 -0
  576. data/lib/tasker/telemetry/intelligent_cache_manager.rb +508 -0
  577. data/lib/tasker/telemetry/log_backend.rb +224 -0
  578. data/lib/tasker/telemetry/metric_types.rb +368 -0
  579. data/lib/tasker/telemetry/metrics_backend.rb +1227 -0
  580. data/lib/tasker/telemetry/metrics_export_service.rb +392 -0
  581. data/lib/tasker/telemetry/plugin_registry.rb +333 -0
  582. data/lib/tasker/telemetry/plugins/base_exporter.rb +246 -0
  583. data/lib/tasker/telemetry/plugins/csv_exporter.rb +198 -0
  584. data/lib/tasker/telemetry/plugins/json_exporter.rb +141 -0
  585. data/lib/tasker/telemetry/prometheus_exporter.rb +249 -0
  586. data/lib/tasker/telemetry/trace_backend.rb +186 -0
  587. data/lib/tasker/telemetry.rb +59 -0
  588. data/lib/tasker/types/auth_config.rb +81 -0
  589. data/lib/tasker/types/backoff_config.rb +142 -0
  590. data/lib/tasker/types/cache_config.rb +257 -0
  591. data/lib/tasker/types/database_config.rb +39 -0
  592. data/lib/tasker/types/dependency_graph.rb +225 -0
  593. data/lib/tasker/types/dependency_graph_config.rb +149 -0
  594. data/lib/tasker/types/engine_config.rb +131 -0
  595. data/lib/tasker/types/execution_config.rb +289 -0
  596. data/lib/tasker/types/health_config.rb +84 -0
  597. data/lib/tasker/types/step_sequence.rb +24 -0
  598. data/lib/tasker/types/step_template.rb +63 -0
  599. data/lib/tasker/types/task_request.rb +60 -0
  600. data/lib/tasker/types/telemetry_config.rb +273 -0
  601. data/lib/tasker/types.rb +64 -0
  602. data/lib/tasker/version.rb +7 -0
  603. data/lib/tasker.rb +82 -0
  604. data/lib/tasks/tasker_tasks.rake +302 -0
  605. metadata +958 -0
@@ -0,0 +1,1690 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <meta charset="utf-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>
7
+ Class: Tasker::Registry::BaseRegistry
8
+
9
+ &mdash; Documentation by YARD 0.9.37
10
+
11
+ </title>
12
+
13
+ <link rel="stylesheet" href="../../css/style.css" type="text/css" />
14
+
15
+ <link rel="stylesheet" href="../../css/common.css" type="text/css" />
16
+
17
+ <script type="text/javascript">
18
+ pathId = "Tasker::Registry::BaseRegistry";
19
+ relpath = '../../';
20
+ </script>
21
+
22
+
23
+ <script type="text/javascript" charset="utf-8" src="../../js/jquery.js"></script>
24
+
25
+ <script type="text/javascript" charset="utf-8" src="../../js/app.js"></script>
26
+
27
+
28
+ </head>
29
+ <body>
30
+ <div class="nav_wrap">
31
+ <iframe id="nav" src="../../class_list.html?1"></iframe>
32
+ <div id="resizer"></div>
33
+ </div>
34
+
35
+ <div id="main" tabindex="-1">
36
+ <div id="header">
37
+ <div id="menu">
38
+
39
+ <a href="../../_index.html">Index (B)</a> &raquo;
40
+ <span class='title'><span class='object_link'><a href="../../Tasker.html" title="Tasker (module)">Tasker</a></span></span> &raquo; <span class='title'><span class='object_link'><a href="../Registry.html" title="Tasker::Registry (module)">Registry</a></span></span>
41
+ &raquo;
42
+ <span class="title">BaseRegistry</span>
43
+
44
+ </div>
45
+
46
+ <div id="search">
47
+
48
+ <a class="full_list_link" id="class_list_link"
49
+ href="../../class_list.html">
50
+
51
+ <svg width="24" height="24">
52
+ <rect x="0" y="4" width="24" height="4" rx="1" ry="1"></rect>
53
+ <rect x="0" y="12" width="24" height="4" rx="1" ry="1"></rect>
54
+ <rect x="0" y="20" width="24" height="4" rx="1" ry="1"></rect>
55
+ </svg>
56
+ </a>
57
+
58
+ </div>
59
+ <div class="clear"></div>
60
+ </div>
61
+
62
+ <div id="content"><h1>Class: Tasker::Registry::BaseRegistry
63
+
64
+
65
+
66
+ </h1>
67
+ <div class="box_info">
68
+
69
+ <dl>
70
+ <dt>Inherits:</dt>
71
+ <dd>
72
+ <span class="inheritName">Object</span>
73
+
74
+ <ul class="fullTree">
75
+ <li>Object</li>
76
+
77
+ <li class="next">Tasker::Registry::BaseRegistry</li>
78
+
79
+ </ul>
80
+ <a href="#" class="inheritanceTree">show all</a>
81
+
82
+ </dd>
83
+ </dl>
84
+
85
+
86
+
87
+
88
+
89
+
90
+ <dl>
91
+ <dt>Includes:</dt>
92
+ <dd><span class='object_link'><a href="../Concerns/StructuredLogging.html" title="Tasker::Concerns::StructuredLogging (module)">Concerns::StructuredLogging</a></span></dd>
93
+ </dl>
94
+
95
+
96
+
97
+
98
+
99
+
100
+ <dl>
101
+ <dt>Defined in:</dt>
102
+ <dd>lib/tasker/registry/base_registry.rb</dd>
103
+ </dl>
104
+
105
+ </div>
106
+
107
+ <h2>Overview</h2><div class="docstring">
108
+ <div class="discussion">
109
+
110
+ <p>Base class for all registry systems in Tasker</p>
111
+
112
+ <p>Provides common functionality including thread-safe operations, structured logging, health checks, and statistics interfaces. All registry classes should inherit from this base class.</p>
113
+
114
+
115
+ </div>
116
+ </div>
117
+ <div class="tags">
118
+
119
+
120
+ </div><div id="subclasses">
121
+ <h2>Direct Known Subclasses</h2>
122
+ <p class="children"><span class='object_link'><a href="../HandlerFactory.html" title="Tasker::HandlerFactory (class)">HandlerFactory</a></span>, <span class='object_link'><a href="SubscriberRegistry.html" title="Tasker::Registry::SubscriberRegistry (class)">SubscriberRegistry</a></span>, <span class='object_link'><a href="../Telemetry/PluginRegistry.html" title="Tasker::Telemetry::PluginRegistry (class)">Telemetry::PluginRegistry</a></span></p>
123
+ </div>
124
+
125
+
126
+
127
+ <h2>Constant Summary</h2>
128
+
129
+ <h3 class="inherited">Constants included
130
+ from <span class='object_link'><a href="../Concerns/StructuredLogging.html" title="Tasker::Concerns::StructuredLogging (module)">Concerns::StructuredLogging</a></span></h3>
131
+ <p class="inherited"><span class='object_link'><a href="../Concerns/StructuredLogging.html#CORRELATION_ID_KEY-constant" title="Tasker::Concerns::StructuredLogging::CORRELATION_ID_KEY (constant)">Concerns::StructuredLogging::CORRELATION_ID_KEY</a></span></p>
132
+
133
+
134
+
135
+
136
+
137
+
138
+ <h2>
139
+ Instance Method Summary
140
+ <small><a href="#" class="summary_toggle">collapse</a></small>
141
+ </h2>
142
+
143
+ <ul class="summary">
144
+
145
+ <li class="public ">
146
+ <span class="summary_signature">
147
+
148
+ <a href="#all_items-instance_method" title="#all_items (instance method)">#<strong>all_items</strong> &#x21d2; Hash </a>
149
+
150
+
151
+
152
+ </span>
153
+
154
+
155
+
156
+
157
+
158
+
159
+
160
+
161
+
162
+ <span class="summary_desc"><div class='inline'>
163
+ <p>Get all items in the registry.</p>
164
+ </div></span>
165
+
166
+ </li>
167
+
168
+
169
+ <li class="protected ">
170
+ <span class="summary_signature">
171
+
172
+ <a href="#base_stats-instance_method" title="#base_stats (instance method)">#<strong>base_stats</strong> &#x21d2; Hash </a>
173
+
174
+
175
+
176
+ </span>
177
+
178
+
179
+
180
+ <span class="note title protected">protected</span>
181
+
182
+
183
+
184
+
185
+
186
+ <span class="summary_desc"><div class='inline'>
187
+ <p>Common registry statistics interface.</p>
188
+ </div></span>
189
+
190
+ </li>
191
+
192
+
193
+ <li class="public ">
194
+ <span class="summary_signature">
195
+
196
+ <a href="#clear!-instance_method" title="#clear! (instance method)">#<strong>clear!</strong> &#x21d2; void </a>
197
+
198
+
199
+
200
+ </span>
201
+
202
+
203
+
204
+
205
+
206
+
207
+
208
+
209
+
210
+ <span class="summary_desc"><div class='inline'>
211
+ <p>Clear all items from the registry.</p>
212
+ </div></span>
213
+
214
+ </li>
215
+
216
+
217
+ <li class="protected ">
218
+ <span class="summary_signature">
219
+
220
+ <a href="#health_check-instance_method" title="#health_check (instance method)">#<strong>health_check</strong> &#x21d2; Hash </a>
221
+
222
+
223
+
224
+ </span>
225
+
226
+
227
+
228
+ <span class="note title protected">protected</span>
229
+
230
+
231
+
232
+
233
+
234
+ <span class="summary_desc"><div class='inline'>
235
+ <p>Comprehensive health check with details.</p>
236
+ </div></span>
237
+
238
+ </li>
239
+
240
+
241
+ <li class="protected ">
242
+ <span class="summary_signature">
243
+
244
+ <a href="#healthy%3F-instance_method" title="#healthy? (instance method)">#<strong>healthy?</strong> &#x21d2; Boolean </a>
245
+
246
+
247
+
248
+ </span>
249
+
250
+
251
+
252
+ <span class="note title protected">protected</span>
253
+
254
+
255
+
256
+
257
+
258
+ <span class="summary_desc"><div class='inline'>
259
+ <p>Health check interface.</p>
260
+ </div></span>
261
+
262
+ </li>
263
+
264
+
265
+ <li class="public ">
266
+ <span class="summary_signature">
267
+
268
+ <a href="#initialize-instance_method" title="#initialize (instance method)">#<strong>initialize</strong> &#x21d2; BaseRegistry </a>
269
+
270
+
271
+
272
+ </span>
273
+
274
+
275
+ <span class="note title constructor">constructor</span>
276
+
277
+
278
+
279
+
280
+
281
+
282
+
283
+
284
+ <span class="summary_desc"><div class='inline'>
285
+ <p>A new instance of BaseRegistry.</p>
286
+ </div></span>
287
+
288
+ </li>
289
+
290
+
291
+ <li class="protected ">
292
+ <span class="summary_signature">
293
+
294
+ <a href="#log_registration-instance_method" title="#log_registration (instance method)">#<strong>log_registration</strong>(entity_type, entity_id, entity_class, options = {}) &#x21d2; Object </a>
295
+
296
+
297
+
298
+ </span>
299
+
300
+
301
+
302
+ <span class="note title protected">protected</span>
303
+
304
+
305
+
306
+
307
+
308
+ <span class="summary_desc"><div class='inline'>
309
+ <p>Log registration events with structured format.</p>
310
+ </div></span>
311
+
312
+ </li>
313
+
314
+
315
+ <li class="protected ">
316
+ <span class="summary_signature">
317
+
318
+ <a href="#log_registry_error-instance_method" title="#log_registry_error (instance method)">#<strong>log_registry_error</strong>(operation, error, **context) &#x21d2; Object </a>
319
+
320
+
321
+
322
+ </span>
323
+
324
+
325
+
326
+ <span class="note title protected">protected</span>
327
+
328
+
329
+
330
+
331
+
332
+ <span class="summary_desc"><div class='inline'>
333
+ <p>Log registry errors with structured format.</p>
334
+ </div></span>
335
+
336
+ </li>
337
+
338
+
339
+ <li class="protected ">
340
+ <span class="summary_signature">
341
+
342
+ <a href="#log_registry_operation-instance_method" title="#log_registry_operation (instance method)">#<strong>log_registry_operation</strong>(operation, **context) &#x21d2; Object </a>
343
+
344
+
345
+
346
+ </span>
347
+
348
+
349
+
350
+ <span class="note title protected">protected</span>
351
+
352
+
353
+
354
+
355
+
356
+ <span class="summary_desc"><div class='inline'>
357
+ <p>Log registry operations with structured format.</p>
358
+ </div></span>
359
+
360
+ </li>
361
+
362
+
363
+ <li class="protected ">
364
+ <span class="summary_signature">
365
+
366
+ <a href="#log_unregistration-instance_method" title="#log_unregistration (instance method)">#<strong>log_unregistration</strong>(entity_type, entity_id, entity_class) &#x21d2; Object </a>
367
+
368
+
369
+
370
+ </span>
371
+
372
+
373
+
374
+ <span class="note title protected">protected</span>
375
+
376
+
377
+
378
+
379
+
380
+ <span class="summary_desc"><div class='inline'>
381
+ <p>Log unregistration events with structured format.</p>
382
+ </div></span>
383
+
384
+ </li>
385
+
386
+
387
+ <li class="protected ">
388
+ <span class="summary_signature">
389
+
390
+ <a href="#log_validation_failure-instance_method" title="#log_validation_failure (instance method)">#<strong>log_validation_failure</strong>(entity_type, entity_id, validation_error) &#x21d2; Object </a>
391
+
392
+
393
+
394
+ </span>
395
+
396
+
397
+
398
+ <span class="note title protected">protected</span>
399
+
400
+
401
+
402
+
403
+
404
+ <span class="summary_desc"><div class='inline'>
405
+ <p>Log validation failures with structured format.</p>
406
+ </div></span>
407
+
408
+ </li>
409
+
410
+
411
+ <li class="public ">
412
+ <span class="summary_signature">
413
+
414
+ <a href="#stats-instance_method" title="#stats (instance method)">#<strong>stats</strong> &#x21d2; Hash </a>
415
+
416
+
417
+
418
+ </span>
419
+
420
+
421
+
422
+
423
+
424
+
425
+
426
+
427
+
428
+ <span class="summary_desc"><div class='inline'>
429
+ <p>Get comprehensive statistics for this registry.</p>
430
+ </div></span>
431
+
432
+ </li>
433
+
434
+
435
+ <li class="protected ">
436
+ <span class="summary_signature">
437
+
438
+ <a href="#thread_safe_operation-instance_method" title="#thread_safe_operation (instance method)">#<strong>thread_safe_operation</strong> { ... } &#x21d2; Object </a>
439
+
440
+
441
+
442
+ </span>
443
+
444
+
445
+
446
+ <span class="note title protected">protected</span>
447
+
448
+
449
+
450
+
451
+
452
+ <span class="summary_desc"><div class='inline'>
453
+ <p>Execute operations in a thread-safe manner.</p>
454
+ </div></span>
455
+
456
+ </li>
457
+
458
+
459
+ <li class="protected ">
460
+ <span class="summary_signature">
461
+
462
+ <a href="#validate_registration_params!-instance_method" title="#validate_registration_params! (instance method)">#<strong>validate_registration_params!</strong>(name, entity_class, options = {}) &#x21d2; Object </a>
463
+
464
+
465
+
466
+ </span>
467
+
468
+
469
+
470
+ <span class="note title protected">protected</span>
471
+
472
+
473
+
474
+
475
+
476
+ <span class="summary_desc"><div class='inline'>
477
+ <p>Validate registration parameters.</p>
478
+ </div></span>
479
+
480
+ </li>
481
+
482
+
483
+ </ul>
484
+
485
+
486
+
487
+
488
+
489
+
490
+
491
+
492
+
493
+
494
+
495
+ <h3 class="inherited">Methods included from <span class='object_link'><a href="../Concerns/StructuredLogging.html" title="Tasker::Concerns::StructuredLogging (module)">Concerns::StructuredLogging</a></span></h3>
496
+ <p class="inherited"><span class='object_link'><a href="../Concerns/StructuredLogging.html#correlation_id-instance_method" title="Tasker::Concerns::StructuredLogging#correlation_id (method)">#correlation_id</a></span>, <span class='object_link'><a href="../Concerns/StructuredLogging.html#correlation_id=-instance_method" title="Tasker::Concerns::StructuredLogging#correlation_id= (method)">#correlation_id=</a></span>, <span class='object_link'><a href="../Concerns/StructuredLogging.html#log_exception-instance_method" title="Tasker::Concerns::StructuredLogging#log_exception (method)">#log_exception</a></span>, <span class='object_link'><a href="../Concerns/StructuredLogging.html#log_orchestration_event-instance_method" title="Tasker::Concerns::StructuredLogging#log_orchestration_event (method)">#log_orchestration_event</a></span>, <span class='object_link'><a href="../Concerns/StructuredLogging.html#log_performance_event-instance_method" title="Tasker::Concerns::StructuredLogging#log_performance_event (method)">#log_performance_event</a></span>, <span class='object_link'><a href="../Concerns/StructuredLogging.html#log_step_event-instance_method" title="Tasker::Concerns::StructuredLogging#log_step_event (method)">#log_step_event</a></span>, <span class='object_link'><a href="../Concerns/StructuredLogging.html#log_structured-instance_method" title="Tasker::Concerns::StructuredLogging#log_structured (method)">#log_structured</a></span>, <span class='object_link'><a href="../Concerns/StructuredLogging.html#log_task_event-instance_method" title="Tasker::Concerns::StructuredLogging#log_task_event (method)">#log_task_event</a></span>, <span class='object_link'><a href="../Concerns/StructuredLogging.html#with_correlation_id-instance_method" title="Tasker::Concerns::StructuredLogging#with_correlation_id (method)">#with_correlation_id</a></span></p>
497
+
498
+ <div id="constructor_details" class="method_details_list">
499
+ <h2>Constructor Details</h2>
500
+
501
+ <div class="method_details first">
502
+ <h3 class="signature first" id="initialize-instance_method">
503
+
504
+ #<strong>initialize</strong> &#x21d2; <tt><span class='object_link'><a href="" title="Tasker::Registry::BaseRegistry (class)">BaseRegistry</a></span></tt>
505
+
506
+
507
+
508
+
509
+
510
+ </h3><div class="docstring">
511
+ <div class="discussion">
512
+
513
+ <p>Returns a new instance of BaseRegistry.</p>
514
+
515
+
516
+ </div>
517
+ </div>
518
+ <div class="tags">
519
+
520
+
521
+ </div><table class="source_code">
522
+ <tr>
523
+ <td>
524
+ <pre class="lines">
525
+
526
+
527
+ 17
528
+ 18
529
+ 19
530
+ 20
531
+ 21
532
+ 22</pre>
533
+ </td>
534
+ <td>
535
+ <pre class="code"><span class="info file"># File 'lib/tasker/registry/base_registry.rb', line 17</span>
536
+
537
+ <span class='kw'>def</span> <span class='id identifier rubyid_initialize'>initialize</span>
538
+ <span class='ivar'>@mutex</span> <span class='op'>=</span> <span class='const'>Mutex</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span>
539
+ <span class='ivar'>@telemetry_config</span> <span class='op'>=</span> <span class='const'><span class='object_link'><a href="../../Tasker.html" title="Tasker (module)">Tasker</a></span></span><span class='period'>.</span><span class='id identifier rubyid_configuration'><span class='object_link'><a href="../../Tasker.html#configuration-class_method" title="Tasker.configuration (method)">configuration</a></span></span><span class='period'>.</span><span class='id identifier rubyid_telemetry'><span class='object_link'><a href="../Configuration.html#telemetry-instance_method" title="Tasker::Configuration#telemetry (method)">telemetry</a></span></span>
540
+ <span class='ivar'>@registry_name</span> <span class='op'>=</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_class'>class</span><span class='period'>.</span><span class='id identifier rubyid_name'>name</span><span class='period'>.</span><span class='id identifier rubyid_demodulize'>demodulize</span><span class='period'>.</span><span class='id identifier rubyid_underscore'>underscore</span>
541
+ <span class='ivar'>@created_at</span> <span class='op'>=</span> <span class='const'>Time</span><span class='period'>.</span><span class='id identifier rubyid_current'>current</span>
542
+ <span class='kw'>end</span></pre>
543
+ </td>
544
+ </tr>
545
+ </table>
546
+ </div>
547
+
548
+ </div>
549
+
550
+
551
+ <div id="instance_method_details" class="method_details_list">
552
+ <h2>Instance Method Details</h2>
553
+
554
+
555
+ <div class="method_details first">
556
+ <h3 class="signature first" id="all_items-instance_method">
557
+
558
+ #<strong>all_items</strong> &#x21d2; <tt>Hash</tt>
559
+
560
+
561
+
562
+
563
+
564
+ </h3><div class="docstring">
565
+ <div class="discussion">
566
+
567
+ <p>Get all items in the registry</p>
568
+
569
+
570
+ </div>
571
+ </div>
572
+ <div class="tags">
573
+
574
+ <p class="tag_title">Returns:</p>
575
+ <ul class="return">
576
+
577
+ <li>
578
+
579
+
580
+ <span class='type'>(<tt>Hash</tt>)</span>
581
+
582
+
583
+
584
+ &mdash;
585
+ <div class='inline'>
586
+ <p>All registered items</p>
587
+ </div>
588
+
589
+ </li>
590
+
591
+ </ul>
592
+ <p class="tag_title">Raises:</p>
593
+ <ul class="raise">
594
+
595
+ <li>
596
+
597
+
598
+ <span class='type'>(<tt>NotImplementedError</tt>)</span>
599
+
600
+
601
+
602
+ &mdash;
603
+ <div class='inline'>
604
+ <p>Must be implemented by subclasses</p>
605
+ </div>
606
+
607
+ </li>
608
+
609
+ </ul>
610
+
611
+ </div><table class="source_code">
612
+ <tr>
613
+ <td>
614
+ <pre class="lines">
615
+
616
+
617
+ 164
618
+ 165
619
+ 166</pre>
620
+ </td>
621
+ <td>
622
+ <pre class="code"><span class="info file"># File 'lib/tasker/registry/base_registry.rb', line 164</span>
623
+
624
+ <span class='kw'>def</span> <span class='id identifier rubyid_all_items'>all_items</span>
625
+ <span class='id identifier rubyid_raise'>raise</span> <span class='const'>NotImplementedError</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>Subclasses must implement #all_items</span><span class='tstring_end'>&#39;</span></span>
626
+ <span class='kw'>end</span></pre>
627
+ </td>
628
+ </tr>
629
+ </table>
630
+ </div>
631
+
632
+ <div class="method_details ">
633
+ <h3 class="signature " id="base_stats-instance_method">
634
+
635
+ #<strong>base_stats</strong> &#x21d2; <tt>Hash</tt> <span class="extras">(protected)</span>
636
+
637
+
638
+
639
+
640
+
641
+ </h3><div class="docstring">
642
+ <div class="discussion">
643
+
644
+ <p>Common registry statistics interface</p>
645
+
646
+
647
+ </div>
648
+ </div>
649
+ <div class="tags">
650
+
651
+ <p class="tag_title">Returns:</p>
652
+ <ul class="return">
653
+
654
+ <li>
655
+
656
+
657
+ <span class='type'>(<tt>Hash</tt>)</span>
658
+
659
+
660
+
661
+ &mdash;
662
+ <div class='inline'>
663
+ <p>Base statistics shared by all registries</p>
664
+ </div>
665
+
666
+ </li>
667
+
668
+ </ul>
669
+
670
+ </div><table class="source_code">
671
+ <tr>
672
+ <td>
673
+ <pre class="lines">
674
+
675
+
676
+ 120
677
+ 121
678
+ 122
679
+ 123
680
+ 124
681
+ 125
682
+ 126</pre>
683
+ </td>
684
+ <td>
685
+ <pre class="code"><span class="info file"># File 'lib/tasker/registry/base_registry.rb', line 120</span>
686
+
687
+ <span class='kw'>def</span> <span class='id identifier rubyid_base_stats'>base_stats</span>
688
+ <span class='lbrace'>{</span>
689
+ <span class='label'>registry_name:</span> <span class='ivar'>@registry_name</span><span class='comma'>,</span>
690
+ <span class='label'>created_at:</span> <span class='ivar'>@created_at</span><span class='comma'>,</span>
691
+ <span class='label'>uptime_seconds:</span> <span class='lparen'>(</span><span class='const'>Time</span><span class='period'>.</span><span class='id identifier rubyid_current'>current</span> <span class='op'>-</span> <span class='ivar'>@created_at</span><span class='rparen'>)</span><span class='period'>.</span><span class='id identifier rubyid_to_i'>to_i</span>
692
+ <span class='rbrace'>}</span>
693
+ <span class='kw'>end</span></pre>
694
+ </td>
695
+ </tr>
696
+ </table>
697
+ </div>
698
+
699
+ <div class="method_details ">
700
+ <h3 class="signature " id="clear!-instance_method">
701
+
702
+ #<strong>clear!</strong> &#x21d2; <tt>void</tt>
703
+
704
+
705
+
706
+
707
+
708
+ </h3><div class="docstring">
709
+ <div class="discussion">
710
+ <p class="note returns_void">This method returns an undefined value.</p>
711
+ <p>Clear all items from the registry</p>
712
+
713
+
714
+ </div>
715
+ </div>
716
+ <div class="tags">
717
+
718
+ <p class="tag_title">Raises:</p>
719
+ <ul class="raise">
720
+
721
+ <li>
722
+
723
+
724
+ <span class='type'>(<tt>NotImplementedError</tt>)</span>
725
+
726
+
727
+
728
+ &mdash;
729
+ <div class='inline'>
730
+ <p>Must be implemented by subclasses</p>
731
+ </div>
732
+
733
+ </li>
734
+
735
+ </ul>
736
+
737
+ </div><table class="source_code">
738
+ <tr>
739
+ <td>
740
+ <pre class="lines">
741
+
742
+
743
+ 172
744
+ 173
745
+ 174</pre>
746
+ </td>
747
+ <td>
748
+ <pre class="code"><span class="info file"># File 'lib/tasker/registry/base_registry.rb', line 172</span>
749
+
750
+ <span class='kw'>def</span> <span class='id identifier rubyid_clear!'>clear!</span>
751
+ <span class='id identifier rubyid_raise'>raise</span> <span class='const'>NotImplementedError</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>Subclasses must implement #clear!</span><span class='tstring_end'>&#39;</span></span>
752
+ <span class='kw'>end</span></pre>
753
+ </td>
754
+ </tr>
755
+ </table>
756
+ </div>
757
+
758
+ <div class="method_details ">
759
+ <h3 class="signature " id="health_check-instance_method">
760
+
761
+ #<strong>health_check</strong> &#x21d2; <tt>Hash</tt> <span class="extras">(protected)</span>
762
+
763
+
764
+
765
+
766
+
767
+ </h3><div class="docstring">
768
+ <div class="discussion">
769
+
770
+ <p>Comprehensive health check with details</p>
771
+
772
+
773
+ </div>
774
+ </div>
775
+ <div class="tags">
776
+
777
+ <p class="tag_title">Returns:</p>
778
+ <ul class="return">
779
+
780
+ <li>
781
+
782
+
783
+ <span class='type'>(<tt>Hash</tt>)</span>
784
+
785
+
786
+
787
+ &mdash;
788
+ <div class='inline'>
789
+ <p>Health check results</p>
790
+ </div>
791
+
792
+ </li>
793
+
794
+ </ul>
795
+
796
+ </div><table class="source_code">
797
+ <tr>
798
+ <td>
799
+ <pre class="lines">
800
+
801
+
802
+ 139
803
+ 140
804
+ 141
805
+ 142
806
+ 143
807
+ 144
808
+ 145
809
+ 146</pre>
810
+ </td>
811
+ <td>
812
+ <pre class="code"><span class="info file"># File 'lib/tasker/registry/base_registry.rb', line 139</span>
813
+
814
+ <span class='kw'>def</span> <span class='id identifier rubyid_health_check'>health_check</span>
815
+ <span class='lbrace'>{</span>
816
+ <span class='label'>healthy:</span> <span class='id identifier rubyid_healthy?'>healthy?</span><span class='comma'>,</span>
817
+ <span class='label'>registry_name:</span> <span class='ivar'>@registry_name</span><span class='comma'>,</span>
818
+ <span class='label'>stats:</span> <span class='id identifier rubyid_stats'>stats</span><span class='comma'>,</span>
819
+ <span class='label'>last_check:</span> <span class='const'>Time</span><span class='period'>.</span><span class='id identifier rubyid_current'>current</span>
820
+ <span class='rbrace'>}</span>
821
+ <span class='kw'>end</span></pre>
822
+ </td>
823
+ </tr>
824
+ </table>
825
+ </div>
826
+
827
+ <div class="method_details ">
828
+ <h3 class="signature " id="healthy?-instance_method">
829
+
830
+ #<strong>healthy?</strong> &#x21d2; <tt>Boolean</tt> <span class="extras">(protected)</span>
831
+
832
+
833
+
834
+
835
+
836
+ </h3><div class="docstring">
837
+ <div class="discussion">
838
+
839
+ <p>Health check interface</p>
840
+
841
+
842
+ </div>
843
+ </div>
844
+ <div class="tags">
845
+
846
+ <p class="tag_title">Returns:</p>
847
+ <ul class="return">
848
+
849
+ <li>
850
+
851
+
852
+ <span class='type'>(<tt>Boolean</tt>)</span>
853
+
854
+
855
+
856
+ &mdash;
857
+ <div class='inline'>
858
+ <p>True if registry is healthy</p>
859
+ </div>
860
+
861
+ </li>
862
+
863
+ </ul>
864
+
865
+ </div><table class="source_code">
866
+ <tr>
867
+ <td>
868
+ <pre class="lines">
869
+
870
+
871
+ 131
872
+ 132
873
+ 133
874
+ 134</pre>
875
+ </td>
876
+ <td>
877
+ <pre class="code"><span class="info file"># File 'lib/tasker/registry/base_registry.rb', line 131</span>
878
+
879
+ <span class='kw'>def</span> <span class='id identifier rubyid_healthy?'>healthy?</span>
880
+ <span class='comment'># Basic health checks that all registries should pass
881
+ </span> <span class='op'>!</span><span class='ivar'>@mutex</span><span class='period'>.</span><span class='id identifier rubyid_locked?'>locked?</span> <span class='op'>&amp;&amp;</span> <span class='id identifier rubyid_respond_to?'>respond_to?</span><span class='lparen'>(</span><span class='symbol'>:stats</span><span class='rparen'>)</span>
882
+ <span class='kw'>end</span></pre>
883
+ </td>
884
+ </tr>
885
+ </table>
886
+ </div>
887
+
888
+ <div class="method_details ">
889
+ <h3 class="signature " id="log_registration-instance_method">
890
+
891
+ #<strong>log_registration</strong>(entity_type, entity_id, entity_class, options = {}) &#x21d2; <tt>Object</tt> <span class="extras">(protected)</span>
892
+
893
+
894
+
895
+
896
+
897
+ </h3><div class="docstring">
898
+ <div class="discussion">
899
+
900
+ <p>Log registration events with structured format</p>
901
+
902
+
903
+ </div>
904
+ </div>
905
+ <div class="tags">
906
+ <p class="tag_title">Parameters:</p>
907
+ <ul class="param">
908
+
909
+ <li>
910
+
911
+ <span class='name'>entity_type</span>
912
+
913
+
914
+ <span class='type'>(<tt>String</tt>)</span>
915
+
916
+
917
+
918
+ &mdash;
919
+ <div class='inline'>
920
+ <p>Type of entity being registered</p>
921
+ </div>
922
+
923
+ </li>
924
+
925
+ <li>
926
+
927
+ <span class='name'>entity_id</span>
928
+
929
+
930
+ <span class='type'>(<tt>String</tt>)</span>
931
+
932
+
933
+
934
+ &mdash;
935
+ <div class='inline'>
936
+ <p>Unique identifier for the entity</p>
937
+ </div>
938
+
939
+ </li>
940
+
941
+ <li>
942
+
943
+ <span class='name'>entity_class</span>
944
+
945
+
946
+ <span class='type'>(<tt>Class</tt>, <tt>String</tt>)</span>
947
+
948
+
949
+
950
+ &mdash;
951
+ <div class='inline'>
952
+ <p>Class of the entity being registered</p>
953
+ </div>
954
+
955
+ </li>
956
+
957
+ <li>
958
+
959
+ <span class='name'>options</span>
960
+
961
+
962
+ <span class='type'>(<tt>Hash</tt>)</span>
963
+
964
+
965
+ <em class="default">(defaults to: <tt>{}</tt>)</em>
966
+
967
+
968
+ &mdash;
969
+ <div class='inline'>
970
+ <p>Additional registration options</p>
971
+ </div>
972
+
973
+ </li>
974
+
975
+ </ul>
976
+
977
+
978
+ </div><table class="source_code">
979
+ <tr>
980
+ <td>
981
+ <pre class="lines">
982
+
983
+
984
+ 32
985
+ 33
986
+ 34
987
+ 35
988
+ 36
989
+ 37
990
+ 38
991
+ 39
992
+ 40
993
+ 41</pre>
994
+ </td>
995
+ <td>
996
+ <pre class="code"><span class="info file"># File 'lib/tasker/registry/base_registry.rb', line 32</span>
997
+
998
+ <span class='kw'>def</span> <span class='id identifier rubyid_log_registration'>log_registration</span><span class='lparen'>(</span><span class='id identifier rubyid_entity_type'>entity_type</span><span class='comma'>,</span> <span class='id identifier rubyid_entity_id'>entity_id</span><span class='comma'>,</span> <span class='id identifier rubyid_entity_class'>entity_class</span><span class='comma'>,</span> <span class='id identifier rubyid_options'>options</span> <span class='op'>=</span> <span class='lbrace'>{</span><span class='rbrace'>}</span><span class='rparen'>)</span>
999
+ <span class='id identifier rubyid_class_name'>class_name</span> <span class='op'>=</span> <span class='id identifier rubyid_entity_class'>entity_class</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span><span class='lparen'>(</span><span class='const'>Class</span><span class='rparen'>)</span> <span class='op'>?</span> <span class='id identifier rubyid_entity_class'>entity_class</span><span class='period'>.</span><span class='id identifier rubyid_name'>name</span> <span class='op'>:</span> <span class='id identifier rubyid_entity_class'>entity_class</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span>
1000
+ <span class='id identifier rubyid_log_structured'>log_structured</span><span class='lparen'>(</span><span class='symbol'>:info</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>Registry item registered</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span>
1001
+ <span class='label'>entity_type:</span> <span class='id identifier rubyid_entity_type'>entity_type</span><span class='comma'>,</span>
1002
+ <span class='label'>entity_id:</span> <span class='id identifier rubyid_entity_id'>entity_id</span><span class='comma'>,</span>
1003
+ <span class='label'>entity_class:</span> <span class='id identifier rubyid_class_name'>class_name</span><span class='comma'>,</span>
1004
+ <span class='label'>registry_name:</span> <span class='ivar'>@registry_name</span><span class='comma'>,</span>
1005
+ <span class='label'>options:</span> <span class='id identifier rubyid_options'>options</span><span class='comma'>,</span>
1006
+ <span class='label'>event_type:</span> <span class='symbol'>:registered</span><span class='rparen'>)</span>
1007
+ <span class='kw'>end</span></pre>
1008
+ </td>
1009
+ </tr>
1010
+ </table>
1011
+ </div>
1012
+
1013
+ <div class="method_details ">
1014
+ <h3 class="signature " id="log_registry_error-instance_method">
1015
+
1016
+ #<strong>log_registry_error</strong>(operation, error, **context) &#x21d2; <tt>Object</tt> <span class="extras">(protected)</span>
1017
+
1018
+
1019
+
1020
+
1021
+
1022
+ </h3><div class="docstring">
1023
+ <div class="discussion">
1024
+
1025
+ <p>Log registry errors with structured format</p>
1026
+
1027
+
1028
+ </div>
1029
+ </div>
1030
+ <div class="tags">
1031
+ <p class="tag_title">Parameters:</p>
1032
+ <ul class="param">
1033
+
1034
+ <li>
1035
+
1036
+ <span class='name'>operation</span>
1037
+
1038
+
1039
+ <span class='type'>(<tt>String</tt>)</span>
1040
+
1041
+
1042
+
1043
+ &mdash;
1044
+ <div class='inline'>
1045
+ <p>Operation that failed</p>
1046
+ </div>
1047
+
1048
+ </li>
1049
+
1050
+ <li>
1051
+
1052
+ <span class='name'>error</span>
1053
+
1054
+
1055
+ <span class='type'>(<tt>Exception</tt>)</span>
1056
+
1057
+
1058
+
1059
+ &mdash;
1060
+ <div class='inline'>
1061
+ <p>The error that occurred</p>
1062
+ </div>
1063
+
1064
+ </li>
1065
+
1066
+ <li>
1067
+
1068
+ <span class='name'>context</span>
1069
+
1070
+
1071
+ <span class='type'>(<tt>Hash</tt>)</span>
1072
+
1073
+
1074
+
1075
+ &mdash;
1076
+ <div class='inline'>
1077
+ <p>Additional context for the error</p>
1078
+ </div>
1079
+
1080
+ </li>
1081
+
1082
+ </ul>
1083
+
1084
+
1085
+ </div><table class="source_code">
1086
+ <tr>
1087
+ <td>
1088
+ <pre class="lines">
1089
+
1090
+
1091
+ 74
1092
+ 75
1093
+ 76
1094
+ 77
1095
+ 78
1096
+ 79
1097
+ 80
1098
+ 81</pre>
1099
+ </td>
1100
+ <td>
1101
+ <pre class="code"><span class="info file"># File 'lib/tasker/registry/base_registry.rb', line 74</span>
1102
+
1103
+ <span class='kw'>def</span> <span class='id identifier rubyid_log_registry_error'>log_registry_error</span><span class='lparen'>(</span><span class='id identifier rubyid_operation'>operation</span><span class='comma'>,</span> <span class='id identifier rubyid_error'>error</span><span class='comma'>,</span> <span class='op'>**</span><span class='id identifier rubyid_context'>context</span><span class='rparen'>)</span>
1104
+ <span class='id identifier rubyid_log_structured'>log_structured</span><span class='lparen'>(</span><span class='symbol'>:error</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Registry </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_operation'>operation</span><span class='embexpr_end'>}</span><span class='tstring_content'> failed</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span>
1105
+ <span class='label'>registry_name:</span> <span class='ivar'>@registry_name</span><span class='comma'>,</span>
1106
+ <span class='label'>operation:</span> <span class='id identifier rubyid_operation'>operation</span><span class='comma'>,</span>
1107
+ <span class='label'>error:</span> <span class='id identifier rubyid_error'>error</span><span class='period'>.</span><span class='id identifier rubyid_message'>message</span><span class='comma'>,</span>
1108
+ <span class='label'>error_class:</span> <span class='id identifier rubyid_error'>error</span><span class='period'>.</span><span class='id identifier rubyid_class'>class</span><span class='period'>.</span><span class='id identifier rubyid_name'>name</span><span class='comma'>,</span>
1109
+ <span class='op'>**</span><span class='id identifier rubyid_context'>context</span><span class='rparen'>)</span>
1110
+ <span class='kw'>end</span></pre>
1111
+ </td>
1112
+ </tr>
1113
+ </table>
1114
+ </div>
1115
+
1116
+ <div class="method_details ">
1117
+ <h3 class="signature " id="log_registry_operation-instance_method">
1118
+
1119
+ #<strong>log_registry_operation</strong>(operation, **context) &#x21d2; <tt>Object</tt> <span class="extras">(protected)</span>
1120
+
1121
+
1122
+
1123
+
1124
+
1125
+ </h3><div class="docstring">
1126
+ <div class="discussion">
1127
+
1128
+ <p>Log registry operations with structured format</p>
1129
+
1130
+
1131
+ </div>
1132
+ </div>
1133
+ <div class="tags">
1134
+ <p class="tag_title">Parameters:</p>
1135
+ <ul class="param">
1136
+
1137
+ <li>
1138
+
1139
+ <span class='name'>operation</span>
1140
+
1141
+
1142
+ <span class='type'>(<tt>String</tt>)</span>
1143
+
1144
+
1145
+
1146
+ &mdash;
1147
+ <div class='inline'>
1148
+ <p>Operation being performed</p>
1149
+ </div>
1150
+
1151
+ </li>
1152
+
1153
+ <li>
1154
+
1155
+ <span class='name'>context</span>
1156
+
1157
+
1158
+ <span class='type'>(<tt>Hash</tt>)</span>
1159
+
1160
+
1161
+
1162
+ &mdash;
1163
+ <div class='inline'>
1164
+ <p>Additional context for the operation</p>
1165
+ </div>
1166
+
1167
+ </li>
1168
+
1169
+ </ul>
1170
+
1171
+
1172
+ </div><table class="source_code">
1173
+ <tr>
1174
+ <td>
1175
+ <pre class="lines">
1176
+
1177
+
1178
+ 62
1179
+ 63
1180
+ 64
1181
+ 65
1182
+ 66
1183
+ 67</pre>
1184
+ </td>
1185
+ <td>
1186
+ <pre class="code"><span class="info file"># File 'lib/tasker/registry/base_registry.rb', line 62</span>
1187
+
1188
+ <span class='kw'>def</span> <span class='id identifier rubyid_log_registry_operation'>log_registry_operation</span><span class='lparen'>(</span><span class='id identifier rubyid_operation'>operation</span><span class='comma'>,</span> <span class='op'>**</span><span class='id identifier rubyid_context'>context</span><span class='rparen'>)</span>
1189
+ <span class='id identifier rubyid_log_structured'>log_structured</span><span class='lparen'>(</span><span class='symbol'>:debug</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&quot;</span><span class='tstring_content'>Registry </span><span class='embexpr_beg'>#{</span><span class='id identifier rubyid_operation'>operation</span><span class='embexpr_end'>}</span><span class='tstring_end'>&quot;</span></span><span class='comma'>,</span>
1190
+ <span class='label'>registry_name:</span> <span class='ivar'>@registry_name</span><span class='comma'>,</span>
1191
+ <span class='label'>operation:</span> <span class='id identifier rubyid_operation'>operation</span><span class='comma'>,</span>
1192
+ <span class='op'>**</span><span class='id identifier rubyid_context'>context</span><span class='rparen'>)</span>
1193
+ <span class='kw'>end</span></pre>
1194
+ </td>
1195
+ </tr>
1196
+ </table>
1197
+ </div>
1198
+
1199
+ <div class="method_details ">
1200
+ <h3 class="signature " id="log_unregistration-instance_method">
1201
+
1202
+ #<strong>log_unregistration</strong>(entity_type, entity_id, entity_class) &#x21d2; <tt>Object</tt> <span class="extras">(protected)</span>
1203
+
1204
+
1205
+
1206
+
1207
+
1208
+ </h3><div class="docstring">
1209
+ <div class="discussion">
1210
+
1211
+ <p>Log unregistration events with structured format</p>
1212
+
1213
+
1214
+ </div>
1215
+ </div>
1216
+ <div class="tags">
1217
+ <p class="tag_title">Parameters:</p>
1218
+ <ul class="param">
1219
+
1220
+ <li>
1221
+
1222
+ <span class='name'>entity_type</span>
1223
+
1224
+
1225
+ <span class='type'>(<tt>String</tt>)</span>
1226
+
1227
+
1228
+
1229
+ &mdash;
1230
+ <div class='inline'>
1231
+ <p>Type of entity being unregistered</p>
1232
+ </div>
1233
+
1234
+ </li>
1235
+
1236
+ <li>
1237
+
1238
+ <span class='name'>entity_id</span>
1239
+
1240
+
1241
+ <span class='type'>(<tt>String</tt>)</span>
1242
+
1243
+
1244
+
1245
+ &mdash;
1246
+ <div class='inline'>
1247
+ <p>Unique identifier for the entity</p>
1248
+ </div>
1249
+
1250
+ </li>
1251
+
1252
+ <li>
1253
+
1254
+ <span class='name'>entity_class</span>
1255
+
1256
+
1257
+ <span class='type'>(<tt>Class</tt>, <tt>String</tt>)</span>
1258
+
1259
+
1260
+
1261
+ &mdash;
1262
+ <div class='inline'>
1263
+ <p>Class of the entity being unregistered</p>
1264
+ </div>
1265
+
1266
+ </li>
1267
+
1268
+ </ul>
1269
+
1270
+
1271
+ </div><table class="source_code">
1272
+ <tr>
1273
+ <td>
1274
+ <pre class="lines">
1275
+
1276
+
1277
+ 48
1278
+ 49
1279
+ 50
1280
+ 51
1281
+ 52
1282
+ 53
1283
+ 54
1284
+ 55
1285
+ 56</pre>
1286
+ </td>
1287
+ <td>
1288
+ <pre class="code"><span class="info file"># File 'lib/tasker/registry/base_registry.rb', line 48</span>
1289
+
1290
+ <span class='kw'>def</span> <span class='id identifier rubyid_log_unregistration'>log_unregistration</span><span class='lparen'>(</span><span class='id identifier rubyid_entity_type'>entity_type</span><span class='comma'>,</span> <span class='id identifier rubyid_entity_id'>entity_id</span><span class='comma'>,</span> <span class='id identifier rubyid_entity_class'>entity_class</span><span class='rparen'>)</span>
1291
+ <span class='id identifier rubyid_class_name'>class_name</span> <span class='op'>=</span> <span class='id identifier rubyid_entity_class'>entity_class</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span><span class='lparen'>(</span><span class='const'>Class</span><span class='rparen'>)</span> <span class='op'>?</span> <span class='id identifier rubyid_entity_class'>entity_class</span><span class='period'>.</span><span class='id identifier rubyid_name'>name</span> <span class='op'>:</span> <span class='id identifier rubyid_entity_class'>entity_class</span><span class='period'>.</span><span class='id identifier rubyid_to_s'>to_s</span>
1292
+ <span class='id identifier rubyid_log_structured'>log_structured</span><span class='lparen'>(</span><span class='symbol'>:info</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>Registry item unregistered</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span>
1293
+ <span class='label'>entity_type:</span> <span class='id identifier rubyid_entity_type'>entity_type</span><span class='comma'>,</span>
1294
+ <span class='label'>entity_id:</span> <span class='id identifier rubyid_entity_id'>entity_id</span><span class='comma'>,</span>
1295
+ <span class='label'>entity_class:</span> <span class='id identifier rubyid_class_name'>class_name</span><span class='comma'>,</span>
1296
+ <span class='label'>registry_name:</span> <span class='ivar'>@registry_name</span><span class='comma'>,</span>
1297
+ <span class='label'>event_type:</span> <span class='symbol'>:unregistered</span><span class='rparen'>)</span>
1298
+ <span class='kw'>end</span></pre>
1299
+ </td>
1300
+ </tr>
1301
+ </table>
1302
+ </div>
1303
+
1304
+ <div class="method_details ">
1305
+ <h3 class="signature " id="log_validation_failure-instance_method">
1306
+
1307
+ #<strong>log_validation_failure</strong>(entity_type, entity_id, validation_error) &#x21d2; <tt>Object</tt> <span class="extras">(protected)</span>
1308
+
1309
+
1310
+
1311
+
1312
+
1313
+ </h3><div class="docstring">
1314
+ <div class="discussion">
1315
+
1316
+ <p>Log validation failures with structured format</p>
1317
+
1318
+
1319
+ </div>
1320
+ </div>
1321
+ <div class="tags">
1322
+ <p class="tag_title">Parameters:</p>
1323
+ <ul class="param">
1324
+
1325
+ <li>
1326
+
1327
+ <span class='name'>entity_type</span>
1328
+
1329
+
1330
+ <span class='type'>(<tt>String</tt>)</span>
1331
+
1332
+
1333
+
1334
+ &mdash;
1335
+ <div class='inline'>
1336
+ <p>Type of entity that failed validation</p>
1337
+ </div>
1338
+
1339
+ </li>
1340
+
1341
+ <li>
1342
+
1343
+ <span class='name'>entity_id</span>
1344
+
1345
+
1346
+ <span class='type'>(<tt>String</tt>)</span>
1347
+
1348
+
1349
+
1350
+ &mdash;
1351
+ <div class='inline'>
1352
+ <p>Unique identifier for the entity</p>
1353
+ </div>
1354
+
1355
+ </li>
1356
+
1357
+ <li>
1358
+
1359
+ <span class='name'>validation_error</span>
1360
+
1361
+
1362
+ <span class='type'>(<tt>String</tt>)</span>
1363
+
1364
+
1365
+
1366
+ &mdash;
1367
+ <div class='inline'>
1368
+ <p>Description of the validation failure</p>
1369
+ </div>
1370
+
1371
+ </li>
1372
+
1373
+ </ul>
1374
+
1375
+
1376
+ </div><table class="source_code">
1377
+ <tr>
1378
+ <td>
1379
+ <pre class="lines">
1380
+
1381
+
1382
+ 88
1383
+ 89
1384
+ 90
1385
+ 91
1386
+ 92
1387
+ 93
1388
+ 94
1389
+ 95</pre>
1390
+ </td>
1391
+ <td>
1392
+ <pre class="code"><span class="info file"># File 'lib/tasker/registry/base_registry.rb', line 88</span>
1393
+
1394
+ <span class='kw'>def</span> <span class='id identifier rubyid_log_validation_failure'>log_validation_failure</span><span class='lparen'>(</span><span class='id identifier rubyid_entity_type'>entity_type</span><span class='comma'>,</span> <span class='id identifier rubyid_entity_id'>entity_id</span><span class='comma'>,</span> <span class='id identifier rubyid_validation_error'>validation_error</span><span class='rparen'>)</span>
1395
+ <span class='id identifier rubyid_log_structured'>log_structured</span><span class='lparen'>(</span><span class='symbol'>:error</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>Registry validation failed</span><span class='tstring_end'>&#39;</span></span><span class='comma'>,</span>
1396
+ <span class='label'>entity_type:</span> <span class='id identifier rubyid_entity_type'>entity_type</span><span class='comma'>,</span>
1397
+ <span class='label'>entity_id:</span> <span class='id identifier rubyid_entity_id'>entity_id</span><span class='comma'>,</span>
1398
+ <span class='label'>registry_name:</span> <span class='ivar'>@registry_name</span><span class='comma'>,</span>
1399
+ <span class='label'>validation_error:</span> <span class='id identifier rubyid_validation_error'>validation_error</span><span class='comma'>,</span>
1400
+ <span class='label'>event_type:</span> <span class='symbol'>:validation_failed</span><span class='rparen'>)</span>
1401
+ <span class='kw'>end</span></pre>
1402
+ </td>
1403
+ </tr>
1404
+ </table>
1405
+ </div>
1406
+
1407
+ <div class="method_details ">
1408
+ <h3 class="signature " id="stats-instance_method">
1409
+
1410
+ #<strong>stats</strong> &#x21d2; <tt>Hash</tt>
1411
+
1412
+
1413
+
1414
+
1415
+
1416
+ </h3><div class="docstring">
1417
+ <div class="discussion">
1418
+
1419
+ <p>Get comprehensive statistics for this registry</p>
1420
+
1421
+
1422
+ </div>
1423
+ </div>
1424
+ <div class="tags">
1425
+
1426
+ <p class="tag_title">Returns:</p>
1427
+ <ul class="return">
1428
+
1429
+ <li>
1430
+
1431
+
1432
+ <span class='type'>(<tt>Hash</tt>)</span>
1433
+
1434
+
1435
+
1436
+ &mdash;
1437
+ <div class='inline'>
1438
+ <p>Registry-specific statistics</p>
1439
+ </div>
1440
+
1441
+ </li>
1442
+
1443
+ </ul>
1444
+ <p class="tag_title">Raises:</p>
1445
+ <ul class="raise">
1446
+
1447
+ <li>
1448
+
1449
+
1450
+ <span class='type'>(<tt>NotImplementedError</tt>)</span>
1451
+
1452
+
1453
+
1454
+ &mdash;
1455
+ <div class='inline'>
1456
+ <p>Must be implemented by subclasses</p>
1457
+ </div>
1458
+
1459
+ </li>
1460
+
1461
+ </ul>
1462
+
1463
+ </div><table class="source_code">
1464
+ <tr>
1465
+ <td>
1466
+ <pre class="lines">
1467
+
1468
+
1469
+ 156
1470
+ 157
1471
+ 158</pre>
1472
+ </td>
1473
+ <td>
1474
+ <pre class="code"><span class="info file"># File 'lib/tasker/registry/base_registry.rb', line 156</span>
1475
+
1476
+ <span class='kw'>def</span> <span class='id identifier rubyid_stats'>stats</span>
1477
+ <span class='id identifier rubyid_raise'>raise</span> <span class='const'>NotImplementedError</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>Subclasses must implement #stats</span><span class='tstring_end'>&#39;</span></span>
1478
+ <span class='kw'>end</span></pre>
1479
+ </td>
1480
+ </tr>
1481
+ </table>
1482
+ </div>
1483
+
1484
+ <div class="method_details ">
1485
+ <h3 class="signature " id="thread_safe_operation-instance_method">
1486
+
1487
+ #<strong>thread_safe_operation</strong> { ... } &#x21d2; <tt>Object</tt> <span class="extras">(protected)</span>
1488
+
1489
+
1490
+
1491
+
1492
+
1493
+ </h3><div class="docstring">
1494
+ <div class="discussion">
1495
+
1496
+ <p>Execute operations in a thread-safe manner</p>
1497
+
1498
+
1499
+ </div>
1500
+ </div>
1501
+ <div class="tags">
1502
+
1503
+ <p class="tag_title">Yields:</p>
1504
+ <ul class="yield">
1505
+
1506
+ <li>
1507
+
1508
+
1509
+ <span class='type'></span>
1510
+
1511
+
1512
+
1513
+
1514
+ <div class='inline'>
1515
+ <p>Block to execute within mutex</p>
1516
+ </div>
1517
+
1518
+ </li>
1519
+
1520
+ </ul>
1521
+ <p class="tag_title">Returns:</p>
1522
+ <ul class="return">
1523
+
1524
+ <li>
1525
+
1526
+
1527
+ <span class='type'>(<tt>Object</tt>)</span>
1528
+
1529
+
1530
+
1531
+ &mdash;
1532
+ <div class='inline'>
1533
+ <p>Result of the block</p>
1534
+ </div>
1535
+
1536
+ </li>
1537
+
1538
+ </ul>
1539
+
1540
+ </div><table class="source_code">
1541
+ <tr>
1542
+ <td>
1543
+ <pre class="lines">
1544
+
1545
+
1546
+ 113
1547
+ 114
1548
+ 115</pre>
1549
+ </td>
1550
+ <td>
1551
+ <pre class="code"><span class="info file"># File 'lib/tasker/registry/base_registry.rb', line 113</span>
1552
+
1553
+ <span class='kw'>def</span> <span class='id identifier rubyid_thread_safe_operation'>thread_safe_operation</span><span class='lparen'>(</span><span class='op'>&amp;</span><span class='rparen'>)</span>
1554
+ <span class='ivar'>@mutex</span><span class='period'>.</span><span class='id identifier rubyid_synchronize'>synchronize</span><span class='lparen'>(</span><span class='op'>&amp;</span><span class='rparen'>)</span>
1555
+ <span class='kw'>end</span></pre>
1556
+ </td>
1557
+ </tr>
1558
+ </table>
1559
+ </div>
1560
+
1561
+ <div class="method_details ">
1562
+ <h3 class="signature " id="validate_registration_params!-instance_method">
1563
+
1564
+ #<strong>validate_registration_params!</strong>(name, entity_class, options = {}) &#x21d2; <tt>Object</tt> <span class="extras">(protected)</span>
1565
+
1566
+
1567
+
1568
+
1569
+
1570
+ </h3><div class="docstring">
1571
+ <div class="discussion">
1572
+
1573
+ <p>Validate registration parameters</p>
1574
+
1575
+
1576
+ </div>
1577
+ </div>
1578
+ <div class="tags">
1579
+ <p class="tag_title">Parameters:</p>
1580
+ <ul class="param">
1581
+
1582
+ <li>
1583
+
1584
+ <span class='name'>name</span>
1585
+
1586
+
1587
+ <span class='type'>(<tt>String</tt>)</span>
1588
+
1589
+
1590
+
1591
+ &mdash;
1592
+ <div class='inline'>
1593
+ <p>Name of the entity</p>
1594
+ </div>
1595
+
1596
+ </li>
1597
+
1598
+ <li>
1599
+
1600
+ <span class='name'>entity_class</span>
1601
+
1602
+
1603
+ <span class='type'>(<tt>Class</tt>)</span>
1604
+
1605
+
1606
+
1607
+ &mdash;
1608
+ <div class='inline'>
1609
+ <p>Class of the entity</p>
1610
+ </div>
1611
+
1612
+ </li>
1613
+
1614
+ <li>
1615
+
1616
+ <span class='name'>options</span>
1617
+
1618
+
1619
+ <span class='type'>(<tt>Hash</tt>)</span>
1620
+
1621
+
1622
+ <em class="default">(defaults to: <tt>{}</tt>)</em>
1623
+
1624
+
1625
+ &mdash;
1626
+ <div class='inline'>
1627
+ <p>Registration options</p>
1628
+ </div>
1629
+
1630
+ </li>
1631
+
1632
+ </ul>
1633
+
1634
+ <p class="tag_title">Raises:</p>
1635
+ <ul class="raise">
1636
+
1637
+ <li>
1638
+
1639
+
1640
+ <span class='type'>(<tt>ArgumentError</tt>)</span>
1641
+
1642
+
1643
+
1644
+ &mdash;
1645
+ <div class='inline'>
1646
+ <p>If parameters are invalid</p>
1647
+ </div>
1648
+
1649
+ </li>
1650
+
1651
+ </ul>
1652
+
1653
+ </div><table class="source_code">
1654
+ <tr>
1655
+ <td>
1656
+ <pre class="lines">
1657
+
1658
+
1659
+ 103
1660
+ 104
1661
+ 105
1662
+ 106
1663
+ 107</pre>
1664
+ </td>
1665
+ <td>
1666
+ <pre class="code"><span class="info file"># File 'lib/tasker/registry/base_registry.rb', line 103</span>
1667
+
1668
+ <span class='kw'>def</span> <span class='id identifier rubyid_validate_registration_params!'>validate_registration_params!</span><span class='lparen'>(</span><span class='id identifier rubyid_name'>name</span><span class='comma'>,</span> <span class='id identifier rubyid_entity_class'>entity_class</span><span class='comma'>,</span> <span class='id identifier rubyid_options'>options</span> <span class='op'>=</span> <span class='lbrace'>{</span><span class='rbrace'>}</span><span class='rparen'>)</span>
1669
+ <span class='id identifier rubyid_raise'>raise</span> <span class='const'>ArgumentError</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>Name cannot be blank</span><span class='tstring_end'>&#39;</span></span> <span class='kw'>if</span> <span class='id identifier rubyid_name'>name</span><span class='period'>.</span><span class='id identifier rubyid_blank?'>blank?</span>
1670
+ <span class='id identifier rubyid_raise'>raise</span> <span class='const'>ArgumentError</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>Entity class cannot be nil</span><span class='tstring_end'>&#39;</span></span> <span class='kw'>if</span> <span class='id identifier rubyid_entity_class'>entity_class</span><span class='period'>.</span><span class='id identifier rubyid_nil?'>nil?</span>
1671
+ <span class='id identifier rubyid_raise'>raise</span> <span class='const'>ArgumentError</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>&#39;</span><span class='tstring_content'>Options must be a Hash</span><span class='tstring_end'>&#39;</span></span> <span class='kw'>unless</span> <span class='id identifier rubyid_options'>options</span><span class='period'>.</span><span class='id identifier rubyid_is_a?'>is_a?</span><span class='lparen'>(</span><span class='const'>Hash</span><span class='rparen'>)</span>
1672
+ <span class='kw'>end</span></pre>
1673
+ </td>
1674
+ </tr>
1675
+ </table>
1676
+ </div>
1677
+
1678
+ </div>
1679
+
1680
+ </div>
1681
+
1682
+ <div id="footer">
1683
+ Generated on Tue Jul 1 16:47:37 2025 by
1684
+ <a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
1685
+ 0.9.37 (ruby-3.2.4).
1686
+ </div>
1687
+
1688
+ </div>
1689
+ </body>
1690
+ </html>