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.
- checksums.yaml +7 -0
- data/LICENSE +22 -0
- data/README.md +443 -0
- data/Rakefile +10 -0
- data/app/controllers/tasker/analytics_controller.rb +179 -0
- data/app/controllers/tasker/application_controller.rb +45 -0
- data/app/controllers/tasker/graphql_controller.rb +193 -0
- data/app/controllers/tasker/handlers_controller.rb +217 -0
- data/app/controllers/tasker/health_controller.rb +229 -0
- data/app/controllers/tasker/metrics_controller.rb +111 -0
- data/app/controllers/tasker/page_sort.rb +97 -0
- data/app/controllers/tasker/task_diagrams_controller.rb +30 -0
- data/app/controllers/tasker/tasks_controller.rb +123 -0
- data/app/controllers/tasker/workflow_steps_controller.rb +69 -0
- data/app/graphql/examples/all_tasks.graphql +22 -0
- data/app/graphql/examples/pending_tasks.graphql +23 -0
- data/app/graphql/tasker/graph_ql_types/annotation_type.rb +14 -0
- data/app/graphql/tasker/graph_ql_types/base_argument.rb +9 -0
- data/app/graphql/tasker/graph_ql_types/base_connection.rb +11 -0
- data/app/graphql/tasker/graph_ql_types/base_edge.rb +10 -0
- data/app/graphql/tasker/graph_ql_types/base_enum.rb +9 -0
- data/app/graphql/tasker/graph_ql_types/base_field.rb +10 -0
- data/app/graphql/tasker/graph_ql_types/base_input_object.rb +10 -0
- data/app/graphql/tasker/graph_ql_types/base_interface.rb +14 -0
- data/app/graphql/tasker/graph_ql_types/base_object.rb +10 -0
- data/app/graphql/tasker/graph_ql_types/base_scalar.rb +9 -0
- data/app/graphql/tasker/graph_ql_types/base_union.rb +11 -0
- data/app/graphql/tasker/graph_ql_types/dependent_system_object_map_type.rb +18 -0
- data/app/graphql/tasker/graph_ql_types/dependent_system_type.rb +13 -0
- data/app/graphql/tasker/graph_ql_types/mutation_type.rb +16 -0
- data/app/graphql/tasker/graph_ql_types/named_step_type.rb +16 -0
- data/app/graphql/tasker/graph_ql_types/named_task_type.rb +14 -0
- data/app/graphql/tasker/graph_ql_types/named_tasks_named_step_type.rb +19 -0
- data/app/graphql/tasker/graph_ql_types/node_type.rb +12 -0
- data/app/graphql/tasker/graph_ql_types/query_type.rb +20 -0
- data/app/graphql/tasker/graph_ql_types/task_annotation_type.rb +17 -0
- data/app/graphql/tasker/graph_ql_types/task_interface.rb +17 -0
- data/app/graphql/tasker/graph_ql_types/task_type.rb +26 -0
- data/app/graphql/tasker/graph_ql_types/workflow_step_type.rb +154 -0
- data/app/graphql/tasker/graph_ql_types.rb +42 -0
- data/app/graphql/tasker/mutations/base_mutation.rb +13 -0
- data/app/graphql/tasker/mutations/cancel_step.rb +29 -0
- data/app/graphql/tasker/mutations/cancel_task.rb +29 -0
- data/app/graphql/tasker/mutations/create_task.rb +52 -0
- data/app/graphql/tasker/mutations/update_step.rb +36 -0
- data/app/graphql/tasker/mutations/update_task.rb +41 -0
- data/app/graphql/tasker/queries/all_annotation_types.rb +17 -0
- data/app/graphql/tasker/queries/all_tasks.rb +23 -0
- data/app/graphql/tasker/queries/base_query.rb +9 -0
- data/app/graphql/tasker/queries/helpers.rb +16 -0
- data/app/graphql/tasker/queries/one_step.rb +24 -0
- data/app/graphql/tasker/queries/one_task.rb +18 -0
- data/app/graphql/tasker/queries/tasks_by_annotation.rb +31 -0
- data/app/graphql/tasker/queries/tasks_by_status.rb +30 -0
- data/app/graphql/tasker/tasker_rails_schema.rb +52 -0
- data/app/jobs/tasker/application_job.rb +8 -0
- data/app/jobs/tasker/metrics_export_job.rb +252 -0
- data/app/jobs/tasker/task_runner_job.rb +224 -0
- data/app/models/tasker/annotation_type.rb +26 -0
- data/app/models/tasker/application_record.rb +70 -0
- data/app/models/tasker/dependent_system.rb +26 -0
- data/app/models/tasker/dependent_system_object_map.rb +64 -0
- data/app/models/tasker/diagram/edge.rb +106 -0
- data/app/models/tasker/diagram/flowchart.rb +137 -0
- data/app/models/tasker/diagram/node.rb +99 -0
- data/app/models/tasker/named_step.rb +41 -0
- data/app/models/tasker/named_task.rb +121 -0
- data/app/models/tasker/named_tasks_named_step.rb +82 -0
- data/app/models/tasker/step_dag_relationship.rb +65 -0
- data/app/models/tasker/step_readiness_status.rb +59 -0
- data/app/models/tasker/task.rb +424 -0
- data/app/models/tasker/task_annotation.rb +36 -0
- data/app/models/tasker/task_diagram.rb +332 -0
- data/app/models/tasker/task_execution_context.rb +29 -0
- data/app/models/tasker/task_namespace.rb +41 -0
- data/app/models/tasker/task_transition.rb +235 -0
- data/app/models/tasker/workflow_step.rb +461 -0
- data/app/models/tasker/workflow_step_edge.rb +94 -0
- data/app/models/tasker/workflow_step_transition.rb +434 -0
- data/app/serializers/tasker/annotation_type_serializer.rb +8 -0
- data/app/serializers/tasker/handler_serializer.rb +109 -0
- data/app/serializers/tasker/task_annotation_serializer.rb +32 -0
- data/app/serializers/tasker/task_serializer.rb +168 -0
- data/app/serializers/tasker/workflow_step_serializer.rb +27 -0
- data/app/services/tasker/analytics_service.rb +409 -0
- data/app/views/tasker/task/_diagram.html.erb +32 -0
- data/config/initializers/dry_struct.rb +11 -0
- data/config/initializers/statesman.rb +6 -0
- data/config/initializers/tasker_orchestration.rb +17 -0
- data/config/initializers/time_formats.rb +4 -0
- data/config/routes.rb +34 -0
- data/config/tasker/subscriptions/example_integrations.yml +67 -0
- data/config/tasker/system_events.yml +305 -0
- data/db/functions/calculate_dependency_levels_v01.sql +45 -0
- data/db/functions/get_analytics_metrics_v01.sql +137 -0
- data/db/functions/get_slowest_steps_v01.sql +82 -0
- data/db/functions/get_slowest_tasks_v01.sql +96 -0
- data/db/functions/get_step_readiness_status_batch_v01.sql +140 -0
- data/db/functions/get_step_readiness_status_v01.sql +139 -0
- data/db/functions/get_system_health_counts_v01.sql +108 -0
- data/db/functions/get_task_execution_context_v01.sql +108 -0
- data/db/functions/get_task_execution_contexts_batch_v01.sql +104 -0
- data/db/init/schema.sql +2277 -0
- data/db/migrate/20250701165431_initial_tasker_schema.rb +116 -0
- data/db/views/tasker_step_dag_relationships_v01.sql +69 -0
- data/docs/APPLICATION_GENERATOR.md +384 -0
- data/docs/AUTH.md +1780 -0
- data/docs/CIRCUIT_BREAKER.md +224 -0
- data/docs/DEVELOPER_GUIDE.md +2665 -0
- data/docs/EVENT_SYSTEM.md +637 -0
- data/docs/EXECUTION_CONFIGURATION.md +341 -0
- data/docs/FLOW_CHART.md +149 -0
- data/docs/HEALTH.md +542 -0
- data/docs/METRICS.md +731 -0
- data/docs/OPTIMIZATION_PLAN.md +1479 -0
- data/docs/OVERVIEW.md +552 -0
- data/docs/QUICK_START.md +270 -0
- data/docs/REGISTRY_SYSTEMS.md +373 -0
- data/docs/REST_API.md +632 -0
- data/docs/ROADMAP.md +221 -0
- data/docs/SQL_FUNCTIONS.md +1408 -0
- data/docs/TASK_DIAGRAM.md +252 -0
- data/docs/TASK_EXECUTION_CONTROL_FLOW.md +237 -0
- data/docs/TELEMETRY.md +795 -0
- data/docs/TROUBLESHOOTING.md +756 -0
- data/docs/TaskHandlerGenerator.html +255 -0
- data/docs/Tasker/Analysis/RuntimeGraphAnalyzer.html +907 -0
- data/docs/Tasker/Analysis/TemplateGraphAnalyzer.html +1236 -0
- data/docs/Tasker/Analysis.html +117 -0
- data/docs/Tasker/AnalyticsController.html +450 -0
- data/docs/Tasker/AnalyticsService/BottleneckAnalytics.html +816 -0
- data/docs/Tasker/AnalyticsService/PerformanceAnalytics.html +586 -0
- data/docs/Tasker/AnalyticsService.html +2221 -0
- data/docs/Tasker/AnnotationType.html +137 -0
- data/docs/Tasker/AnnotationTypeSerializer.html +124 -0
- data/docs/Tasker/ApplicationController.html +147 -0
- data/docs/Tasker/ApplicationJob.html +128 -0
- data/docs/Tasker/ApplicationRecord.html +378 -0
- data/docs/Tasker/Authentication/AuthenticationError.html +124 -0
- data/docs/Tasker/Authentication/ConfigurationError.html +124 -0
- data/docs/Tasker/Authentication/Coordinator.html +242 -0
- data/docs/Tasker/Authentication/Interface.html +560 -0
- data/docs/Tasker/Authentication/InterfaceError.html +124 -0
- data/docs/Tasker/Authentication/NoneAuthenticator.html +338 -0
- data/docs/Tasker/Authentication.html +119 -0
- data/docs/Tasker/Authorization/AuthorizationError.html +139 -0
- data/docs/Tasker/Authorization/BaseCoordinator.html +927 -0
- data/docs/Tasker/Authorization/ConfigurationError.html +153 -0
- data/docs/Tasker/Authorization/ResourceConstants/ACTIONS.html +428 -0
- data/docs/Tasker/Authorization/ResourceConstants/RESOURCES.html +365 -0
- data/docs/Tasker/Authorization/ResourceConstants.html +146 -0
- data/docs/Tasker/Authorization/ResourceRegistry.html +882 -0
- data/docs/Tasker/Authorization/UnauthorizedError.html +153 -0
- data/docs/Tasker/Authorization.html +582 -0
- data/docs/Tasker/CacheCapabilities.html +167 -0
- data/docs/Tasker/CacheStrategy.html +1297 -0
- data/docs/Tasker/Concerns/Authenticatable.html +116 -0
- data/docs/Tasker/Concerns/Authorizable/AdminStatusChecker.html +256 -0
- data/docs/Tasker/Concerns/Authorizable.html +816 -0
- data/docs/Tasker/Concerns/ControllerAuthorizable.html +157 -0
- data/docs/Tasker/Concerns/EventPublisher.html +4023 -0
- data/docs/Tasker/Concerns/IdempotentStateTransitions.html +806 -0
- data/docs/Tasker/Concerns/LifecycleEventHelpers.html +129 -0
- data/docs/Tasker/Concerns/OrchestrationPublisher.html +129 -0
- data/docs/Tasker/Concerns/StateMachineBase/ClassMethods.html +1075 -0
- data/docs/Tasker/Concerns/StateMachineBase/StateMachineBase/ClassMethods.html +191 -0
- data/docs/Tasker/Concerns/StateMachineBase/StateMachineBase.html +126 -0
- data/docs/Tasker/Concerns/StateMachineBase.html +153 -0
- data/docs/Tasker/Concerns/StructuredLogging.html +1413 -0
- data/docs/Tasker/Concerns.html +117 -0
- data/docs/Tasker/Configuration/AuthConfiguration.html +1023 -0
- data/docs/Tasker/Configuration/ConfigurationProxy.html +581 -0
- data/docs/Tasker/Configuration/DatabaseConfiguration.html +475 -0
- data/docs/Tasker/Configuration/EngineConfiguration.html +1265 -0
- data/docs/Tasker/Configuration/HealthConfiguration.html +791 -0
- data/docs/Tasker/Configuration/TelemetryConfiguration.html +1308 -0
- data/docs/Tasker/Configuration/TelemetryConfigurationProxy.html +388 -0
- data/docs/Tasker/Configuration.html +1669 -0
- data/docs/Tasker/ConfigurationError.html +143 -0
- data/docs/Tasker/ConfiguredTask.html +514 -0
- data/docs/Tasker/Constants/EventDefinitions.html +590 -0
- data/docs/Tasker/Constants/LifecycleEvents.html +137 -0
- data/docs/Tasker/Constants/ObservabilityEvents/Step.html +152 -0
- data/docs/Tasker/Constants/ObservabilityEvents/Task.html +142 -0
- data/docs/Tasker/Constants/ObservabilityEvents.html +126 -0
- data/docs/Tasker/Constants/RegistryEvents.html +285 -0
- data/docs/Tasker/Constants/StepEvents.html +177 -0
- data/docs/Tasker/Constants/TaskEvents.html +167 -0
- data/docs/Tasker/Constants/TaskExecution/ExecutionStatus.html +207 -0
- data/docs/Tasker/Constants/TaskExecution/HealthStatus.html +191 -0
- data/docs/Tasker/Constants/TaskExecution/RecommendedAction.html +207 -0
- data/docs/Tasker/Constants/TaskExecution.html +126 -0
- data/docs/Tasker/Constants/TaskFinalization/ErrorMessages.html +132 -0
- data/docs/Tasker/Constants/TaskFinalization/PendingReasons.html +207 -0
- data/docs/Tasker/Constants/TaskFinalization/ReenqueueReasons.html +239 -0
- data/docs/Tasker/Constants/TaskFinalization.html +126 -0
- data/docs/Tasker/Constants/TaskStatuses.html +223 -0
- data/docs/Tasker/Constants/TestEvents.html +163 -0
- data/docs/Tasker/Constants/WorkflowEvents.html +222 -0
- data/docs/Tasker/Constants/WorkflowStepStatuses.html +223 -0
- data/docs/Tasker/Constants.html +561 -0
- data/docs/Tasker/DependentSystem.html +137 -0
- data/docs/Tasker/DependentSystemObjectMap.html +250 -0
- data/docs/Tasker/DetectorRegistry.html +598 -0
- data/docs/Tasker/Diagram/Edge.html +1191 -0
- data/docs/Tasker/Diagram/Flowchart.html +1539 -0
- data/docs/Tasker/Diagram/Node.html +1165 -0
- data/docs/Tasker/Diagram.html +117 -0
- data/docs/Tasker/Engine.html +215 -0
- data/docs/Tasker/Error.html +139 -0
- data/docs/Tasker/Events/Bus.html +1226 -0
- data/docs/Tasker/Events/Catalog/CatalogPrinter.html +258 -0
- data/docs/Tasker/Events/Catalog/CustomEventRegistrar.html +276 -0
- data/docs/Tasker/Events/Catalog/ExamplePayloadGenerator.html +294 -0
- data/docs/Tasker/Events/Catalog.html +1291 -0
- data/docs/Tasker/Events/CustomRegistry.html +943 -0
- data/docs/Tasker/Events/DefinitionLoader.html +575 -0
- data/docs/Tasker/Events/EventPayloadBuilder/ErrorInfoExtractor.html +286 -0
- data/docs/Tasker/Events/EventPayloadBuilder/StepPayloadBuilder.html +312 -0
- data/docs/Tasker/Events/EventPayloadBuilder.html +664 -0
- data/docs/Tasker/Events/Publisher.html +365 -0
- data/docs/Tasker/Events/Subscribers/BaseSubscriber/ErrorCategorizer/ErrorTypeClassifier.html +1128 -0
- data/docs/Tasker/Events/Subscribers/BaseSubscriber/ErrorCategorizer.html +270 -0
- data/docs/Tasker/Events/Subscribers/BaseSubscriber/MetricTagsExtractor.html +266 -0
- data/docs/Tasker/Events/Subscribers/BaseSubscriber.html +2556 -0
- data/docs/Tasker/Events/Subscribers/MetricsSubscriber.html +723 -0
- data/docs/Tasker/Events/Subscribers/TelemetrySubscriber.html +2251 -0
- data/docs/Tasker/Events/Subscribers.html +117 -0
- data/docs/Tasker/Events/SubscriptionLoader.html +493 -0
- data/docs/Tasker/Events.html +294 -0
- data/docs/Tasker/EventsGenerator.html +459 -0
- data/docs/Tasker/Functions/FunctionBasedAnalyticsMetrics/AnalyticsMetrics.html +135 -0
- data/docs/Tasker/Functions/FunctionBasedAnalyticsMetrics.html +412 -0
- data/docs/Tasker/Functions/FunctionBasedDependencyLevels.html +598 -0
- data/docs/Tasker/Functions/FunctionBasedSlowestSteps/SlowestStep.html +135 -0
- data/docs/Tasker/Functions/FunctionBasedSlowestSteps.html +453 -0
- data/docs/Tasker/Functions/FunctionBasedSlowestTasks/SlowestTask.html +135 -0
- data/docs/Tasker/Functions/FunctionBasedSlowestTasks.html +453 -0
- data/docs/Tasker/Functions/FunctionBasedStepReadinessStatus.html +1457 -0
- data/docs/Tasker/Functions/FunctionBasedSystemHealthCounts/HealthMetrics.html +135 -0
- data/docs/Tasker/Functions/FunctionBasedSystemHealthCounts.html +370 -0
- data/docs/Tasker/Functions/FunctionBasedTaskExecutionContext.html +1250 -0
- data/docs/Tasker/Functions/FunctionWrapper.html +479 -0
- data/docs/Tasker/Functions.html +117 -0
- data/docs/Tasker/Generators/AuthenticatorGenerator/UsageInstructionsFormatter.html +244 -0
- data/docs/Tasker/Generators/AuthenticatorGenerator.html +373 -0
- data/docs/Tasker/Generators/AuthorizationCoordinatorGenerator.html +430 -0
- data/docs/Tasker/Generators/SubscriberGenerator.html +377 -0
- data/docs/Tasker/Generators/TaskHandlerGenerator.html +263 -0
- data/docs/Tasker/Generators.html +117 -0
- data/docs/Tasker/GraphQLTypes/AnnotationType.html +132 -0
- data/docs/Tasker/GraphQLTypes/BaseArgument.html +124 -0
- data/docs/Tasker/GraphQLTypes/BaseConnection.html +124 -0
- data/docs/Tasker/GraphQLTypes/BaseEdge.html +130 -0
- data/docs/Tasker/GraphQLTypes/BaseEnum.html +124 -0
- data/docs/Tasker/GraphQLTypes/BaseField.html +124 -0
- data/docs/Tasker/GraphQLTypes/BaseInputObject.html +124 -0
- data/docs/Tasker/GraphQLTypes/BaseInterface.html +116 -0
- data/docs/Tasker/GraphQLTypes/BaseObject.html +128 -0
- data/docs/Tasker/GraphQLTypes/BaseScalar.html +124 -0
- data/docs/Tasker/GraphQLTypes/BaseUnion.html +124 -0
- data/docs/Tasker/GraphQLTypes/DependentSystemObjectMapType.html +132 -0
- data/docs/Tasker/GraphQLTypes/DependentSystemType.html +132 -0
- data/docs/Tasker/GraphQLTypes/MutationType.html +132 -0
- data/docs/Tasker/GraphQLTypes/NamedStepType.html +132 -0
- data/docs/Tasker/GraphQLTypes/NamedTaskType.html +132 -0
- data/docs/Tasker/GraphQLTypes/NamedTasksNamedStepType.html +132 -0
- data/docs/Tasker/GraphQLTypes/NodeType.html +118 -0
- data/docs/Tasker/GraphQLTypes/QueryType.html +139 -0
- data/docs/Tasker/GraphQLTypes/TaskAnnotationType.html +132 -0
- data/docs/Tasker/GraphQLTypes/TaskInterface.html +111 -0
- data/docs/Tasker/GraphQLTypes/TaskType.html +201 -0
- data/docs/Tasker/GraphQLTypes/WorkflowStepType.html +694 -0
- data/docs/Tasker/GraphQLTypes.html +130 -0
- data/docs/Tasker/GraphqlController.html +251 -0
- data/docs/Tasker/HandlerFactory.html +1518 -0
- data/docs/Tasker/HandlerSerializer.html +682 -0
- data/docs/Tasker/HandlersController.html +574 -0
- data/docs/Tasker/HashIdentityStrategy.html +278 -0
- data/docs/Tasker/Health/ReadinessChecker.html +712 -0
- data/docs/Tasker/Health/StatusChecker.html +653 -0
- data/docs/Tasker/Health.html +117 -0
- data/docs/Tasker/HealthController.html +523 -0
- data/docs/Tasker/IdentityStrategy.html +276 -0
- data/docs/Tasker/InvalidTaskHandlerConfig.html +135 -0
- data/docs/Tasker/LifecycleEvents/Events/Step.html +162 -0
- data/docs/Tasker/LifecycleEvents/Events/Task.html +162 -0
- data/docs/Tasker/LifecycleEvents/Events.html +204 -0
- data/docs/Tasker/LifecycleEvents/Publisher.html +132 -0
- data/docs/Tasker/LifecycleEvents.html +799 -0
- data/docs/Tasker/Logging/CorrelationIdGenerator.html +688 -0
- data/docs/Tasker/Logging.html +115 -0
- data/docs/Tasker/MetricsController.html +293 -0
- data/docs/Tasker/MetricsExportJob.html +414 -0
- data/docs/Tasker/Mutations/BaseMutation.html +128 -0
- data/docs/Tasker/Mutations/CancelStep.html +219 -0
- data/docs/Tasker/Mutations/CancelTask.html +221 -0
- data/docs/Tasker/Mutations/CreateTask.html +243 -0
- data/docs/Tasker/Mutations/UpdateStep.html +243 -0
- data/docs/Tasker/Mutations/UpdateTask.html +243 -0
- data/docs/Tasker/Mutations.html +117 -0
- data/docs/Tasker/NamedStep.html +216 -0
- data/docs/Tasker/NamedTask.html +910 -0
- data/docs/Tasker/NamedTasksNamedStep.html +435 -0
- data/docs/Tasker/Orchestration/BackoffCalculator.html +404 -0
- data/docs/Tasker/Orchestration/ConnectionBuilder/ConfigValidator.html +258 -0
- data/docs/Tasker/Orchestration/ConnectionBuilder.html +435 -0
- data/docs/Tasker/Orchestration/ConnectionPoolIntelligence.html +513 -0
- data/docs/Tasker/Orchestration/Coordinator.html +641 -0
- data/docs/Tasker/Orchestration/FutureStateAnalyzer.html +1045 -0
- data/docs/Tasker/Orchestration/Orchestrator.html +679 -0
- data/docs/Tasker/Orchestration/PluginIntegration.html +1127 -0
- data/docs/Tasker/Orchestration/ResponseProcessor.html +504 -0
- data/docs/Tasker/Orchestration/RetryHeaderParser.html +304 -0
- data/docs/Tasker/Orchestration/StepExecutor.html +995 -0
- data/docs/Tasker/Orchestration/StepSequenceFactory.html +644 -0
- data/docs/Tasker/Orchestration/TaskFinalizer/BlockageChecker.html +264 -0
- data/docs/Tasker/Orchestration/TaskFinalizer/ContextManager.html +254 -0
- data/docs/Tasker/Orchestration/TaskFinalizer/DelayCalculator.html +556 -0
- data/docs/Tasker/Orchestration/TaskFinalizer/FinalizationDecisionMaker.html +348 -0
- data/docs/Tasker/Orchestration/TaskFinalizer/FinalizationProcessor.html +286 -0
- data/docs/Tasker/Orchestration/TaskFinalizer/ReasonDeterminer.html +432 -0
- data/docs/Tasker/Orchestration/TaskFinalizer/ReenqueueManager.html +296 -0
- data/docs/Tasker/Orchestration/TaskFinalizer/UnclearStateHandler.html +314 -0
- data/docs/Tasker/Orchestration/TaskFinalizer.html +1212 -0
- data/docs/Tasker/Orchestration/TaskInitializer.html +766 -0
- data/docs/Tasker/Orchestration/TaskReenqueuer.html +506 -0
- data/docs/Tasker/Orchestration/ViableStepDiscovery.html +442 -0
- data/docs/Tasker/Orchestration/WorkflowCoordinator.html +510 -0
- data/docs/Tasker/Orchestration.html +130 -0
- data/docs/Tasker/PageSort/PageSortParamsBuilder.html +296 -0
- data/docs/Tasker/PageSort.html +247 -0
- data/docs/Tasker/PermanentError.html +518 -0
- data/docs/Tasker/ProceduralError.html +147 -0
- data/docs/Tasker/Queries/AllAnnotationTypes.html +217 -0
- data/docs/Tasker/Queries/AllTasks.html +221 -0
- data/docs/Tasker/Queries/BaseQuery.html +128 -0
- data/docs/Tasker/Queries/Helpers.html +187 -0
- data/docs/Tasker/Queries/OneStep.html +225 -0
- data/docs/Tasker/Queries/OneTask.html +217 -0
- data/docs/Tasker/Queries/TasksByAnnotation.html +231 -0
- data/docs/Tasker/Queries/TasksByStatus.html +233 -0
- data/docs/Tasker/Queries.html +119 -0
- data/docs/Tasker/Railtie.html +124 -0
- data/docs/Tasker/Registry/BaseRegistry.html +1690 -0
- data/docs/Tasker/Registry/EventPublisher.html +667 -0
- data/docs/Tasker/Registry/InterfaceValidator.html +569 -0
- data/docs/Tasker/Registry/RegistrationError.html +132 -0
- data/docs/Tasker/Registry/RegistryError.html +139 -0
- data/docs/Tasker/Registry/StatisticsCollector.html +841 -0
- data/docs/Tasker/Registry/SubscriberRegistry.html +1504 -0
- data/docs/Tasker/Registry/ValidationError.html +132 -0
- data/docs/Tasker/Registry.html +119 -0
- data/docs/Tasker/RetryableError.html +515 -0
- data/docs/Tasker/StateMachine/Compatibility.html +282 -0
- data/docs/Tasker/StateMachine/InvalidStateTransition.html +135 -0
- data/docs/Tasker/StateMachine/StepStateMachine/StandardizedPayloadBuilder.html +260 -0
- data/docs/Tasker/StateMachine/StepStateMachine.html +2215 -0
- data/docs/Tasker/StateMachine/TaskStateMachine.html +734 -0
- data/docs/Tasker/StateMachine.html +602 -0
- data/docs/Tasker/StepDagRelationship.html +657 -0
- data/docs/Tasker/StepHandler/Api/Config.html +1091 -0
- data/docs/Tasker/StepHandler/Api.html +884 -0
- data/docs/Tasker/StepHandler/AutomaticEventPublishing.html +321 -0
- data/docs/Tasker/StepHandler/Base.html +970 -0
- data/docs/Tasker/StepHandler.html +119 -0
- data/docs/Tasker/StepReadinessStatus.html +836 -0
- data/docs/Tasker/Task.html +2575 -0
- data/docs/Tasker/TaskAnnotation.html +137 -0
- data/docs/Tasker/TaskAnnotationSerializer.html +124 -0
- data/docs/Tasker/TaskBuilder/StepNameValidator.html +264 -0
- data/docs/Tasker/TaskBuilder/StepTemplateDefiner.html +264 -0
- data/docs/Tasker/TaskBuilder.html +764 -0
- data/docs/Tasker/TaskDiagram/StepToStepEdgeBuilder.html +260 -0
- data/docs/Tasker/TaskDiagram/TaskToRootStepEdgeBuilder.html +290 -0
- data/docs/Tasker/TaskDiagram.html +548 -0
- data/docs/Tasker/TaskDiagramsController.html +240 -0
- data/docs/Tasker/TaskExecutionContext.html +469 -0
- data/docs/Tasker/TaskHandler/ClassMethods/StepTemplateDefiner/ClassBasedEventRegistrar.html +238 -0
- data/docs/Tasker/TaskHandler/ClassMethods/StepTemplateDefiner/YamlEventRegistrar.html +254 -0
- data/docs/Tasker/TaskHandler/ClassMethods/StepTemplateDefiner.html +988 -0
- data/docs/Tasker/TaskHandler/ClassMethods.html +357 -0
- data/docs/Tasker/TaskHandler/InstanceMethods.html +1396 -0
- data/docs/Tasker/TaskHandler/StepGroup.html +1748 -0
- data/docs/Tasker/TaskHandler.html +271 -0
- data/docs/Tasker/TaskNamespace.html +312 -0
- data/docs/Tasker/TaskRunnerJob.html +406 -0
- data/docs/Tasker/TaskSerializer.html +474 -0
- data/docs/Tasker/TaskTransition.html +1517 -0
- data/docs/Tasker/TaskWorkflowSummary.html +988 -0
- data/docs/Tasker/TaskerRailsSchema/InvalidObjectTypeError.html +132 -0
- data/docs/Tasker/TaskerRailsSchema/TypeResolutionError.html +139 -0
- data/docs/Tasker/TaskerRailsSchema/UnknownInterfaceError.html +132 -0
- data/docs/Tasker/TaskerRailsSchema.html +384 -0
- data/docs/Tasker/TasksController.html +595 -0
- data/docs/Tasker/Telemetry/EventMapping.html +1307 -0
- data/docs/Tasker/Telemetry/EventRouter.html +2178 -0
- data/docs/Tasker/Telemetry/Events/ExportEvents.html +246 -0
- data/docs/Tasker/Telemetry/Events.html +115 -0
- data/docs/Tasker/Telemetry/ExportCoordinator/DistributedLockTimeoutError.html +135 -0
- data/docs/Tasker/Telemetry/ExportCoordinator.html +2137 -0
- data/docs/Tasker/Telemetry/IntelligentCacheManager.html +1083 -0
- data/docs/Tasker/Telemetry/LogBackend.html +1088 -0
- data/docs/Tasker/Telemetry/MetricTypes/Counter.html +1054 -0
- data/docs/Tasker/Telemetry/MetricTypes/Gauge.html +1270 -0
- data/docs/Tasker/Telemetry/MetricTypes/Histogram.html +1492 -0
- data/docs/Tasker/Telemetry/MetricTypes.html +153 -0
- data/docs/Tasker/Telemetry/MetricsBackend.html +2510 -0
- data/docs/Tasker/Telemetry/MetricsExportService.html +578 -0
- data/docs/Tasker/Telemetry/PluginRegistry.html +1774 -0
- data/docs/Tasker/Telemetry/Plugins/BaseExporter.html +1835 -0
- data/docs/Tasker/Telemetry/Plugins/CsvExporter.html +768 -0
- data/docs/Tasker/Telemetry/Plugins/JsonExporter.html +747 -0
- data/docs/Tasker/Telemetry/Plugins.html +117 -0
- data/docs/Tasker/Telemetry/PrometheusExporter.html +481 -0
- data/docs/Tasker/Telemetry/TraceBackend.html +891 -0
- data/docs/Tasker/Telemetry.html +130 -0
- data/docs/Tasker/Types/AuthConfig.html +886 -0
- data/docs/Tasker/Types/BackoffConfig.html +1063 -0
- data/docs/Tasker/Types/BaseConfig.html +227 -0
- data/docs/Tasker/Types/CacheConfig.html +1731 -0
- data/docs/Tasker/Types/DatabaseConfig.html +388 -0
- data/docs/Tasker/Types/DependencyGraph.html +526 -0
- data/docs/Tasker/Types/DependencyGraphConfig.html +753 -0
- data/docs/Tasker/Types/EngineConfig.html +1181 -0
- data/docs/Tasker/Types/ExecutionConfig.html +1963 -0
- data/docs/Tasker/Types/GraphEdge.html +517 -0
- data/docs/Tasker/Types/GraphMetadata.html +781 -0
- data/docs/Tasker/Types/GraphNode.html +694 -0
- data/docs/Tasker/Types/HealthConfig.html +784 -0
- data/docs/Tasker/Types/StepSequence.html +353 -0
- data/docs/Tasker/Types/StepTemplate.html +1193 -0
- data/docs/Tasker/Types/TaskRequest.html +1179 -0
- data/docs/Tasker/Types/TelemetryConfig.html +2746 -0
- data/docs/Tasker/Types.html +154 -0
- data/docs/Tasker/WorkflowStep/StepFinder.html +282 -0
- data/docs/Tasker/WorkflowStep.html +2724 -0
- data/docs/Tasker/WorkflowStepEdge.html +304 -0
- data/docs/Tasker/WorkflowStepSerializer.html +305 -0
- data/docs/Tasker/WorkflowStepTransition/TransitionDescriptionFormatter.html +282 -0
- data/docs/Tasker/WorkflowStepTransition.html +2201 -0
- data/docs/Tasker/WorkflowStepsController.html +462 -0
- data/docs/Tasker.html +452 -0
- data/docs/VISION.md +584 -0
- data/docs/WHY.md +21 -0
- data/docs/_index.html +2375 -0
- data/docs/class_list.html +54 -0
- data/docs/css/common.css +1 -0
- data/docs/css/full_list.css +58 -0
- data/docs/css/style.css +503 -0
- data/docs/events/migration_plan_outcomes.md +80 -0
- data/docs/file.README.html +541 -0
- data/docs/file_list.html +59 -0
- data/docs/frames.html +22 -0
- data/docs/index.html +541 -0
- data/docs/js/app.js +344 -0
- data/docs/js/full_list.js +242 -0
- data/docs/js/jquery.js +4 -0
- data/docs/method_list.html +9182 -0
- data/docs/top-level-namespace.html +110 -0
- data/lib/generators/tasker/authenticator_generator.rb +301 -0
- data/lib/generators/tasker/authorization_coordinator_generator.rb +139 -0
- data/lib/generators/tasker/events_generator.rb +91 -0
- data/lib/generators/tasker/subscriber_generator.rb +107 -0
- data/lib/generators/tasker/task_handler_generator.rb +138 -0
- data/lib/generators/tasker/templates/api_token_authenticator.rb.erb +113 -0
- data/lib/generators/tasker/templates/api_token_authenticator_spec.rb.erb +144 -0
- data/lib/generators/tasker/templates/authorization_coordinator.rb.erb +95 -0
- data/lib/generators/tasker/templates/authorization_coordinator_spec.rb.erb +142 -0
- data/lib/generators/tasker/templates/custom_authenticator.rb.erb +108 -0
- data/lib/generators/tasker/templates/custom_authenticator_spec.rb.erb +162 -0
- data/lib/generators/tasker/templates/custom_events.yml.erb +62 -0
- data/lib/generators/tasker/templates/custom_subscriber.rb.erb +72 -0
- data/lib/generators/tasker/templates/devise_authenticator.rb.erb +101 -0
- data/lib/generators/tasker/templates/devise_authenticator_spec.rb.erb +126 -0
- data/lib/generators/tasker/templates/initialize.rb.erb +202 -0
- data/lib/generators/tasker/templates/jwt_authenticator.rb.erb +144 -0
- data/lib/generators/tasker/templates/jwt_authenticator_spec.rb.erb +298 -0
- data/lib/generators/tasker/templates/metrics_subscriber.rb.erb +258 -0
- data/lib/generators/tasker/templates/metrics_subscriber_spec.rb.erb +308 -0
- data/lib/generators/tasker/templates/omniauth_authenticator.rb.erb +135 -0
- data/lib/generators/tasker/templates/omniauth_authenticator_spec.rb.erb +196 -0
- data/lib/generators/tasker/templates/opentelemetry_initializer.rb +52 -0
- data/lib/generators/tasker/templates/subscriber.rb.erb +64 -0
- data/lib/generators/tasker/templates/subscriber_spec.rb.erb +80 -0
- data/lib/generators/tasker/templates/task_config.yaml.erb +117 -0
- data/lib/generators/tasker/templates/task_handler.rb.erb +59 -0
- data/lib/generators/tasker/templates/task_handler_spec.rb.erb +159 -0
- data/lib/tasker/analysis/runtime_graph_analyzer.rb +1168 -0
- data/lib/tasker/analysis/template_graph_analyzer.rb +328 -0
- data/lib/tasker/authentication/coordinator.rb +78 -0
- data/lib/tasker/authentication/errors.rb +9 -0
- data/lib/tasker/authentication/interface.rb +36 -0
- data/lib/tasker/authentication/none_authenticator.rb +26 -0
- data/lib/tasker/authorization/base_coordinator.rb +112 -0
- data/lib/tasker/authorization/errors.rb +26 -0
- data/lib/tasker/authorization/resource_constants.rb +74 -0
- data/lib/tasker/authorization/resource_registry.rb +143 -0
- data/lib/tasker/authorization.rb +75 -0
- data/lib/tasker/cache_capabilities.rb +131 -0
- data/lib/tasker/cache_strategy.rb +469 -0
- data/lib/tasker/concerns/authenticatable.rb +41 -0
- data/lib/tasker/concerns/authorizable.rb +204 -0
- data/lib/tasker/concerns/controller_authorizable.rb +124 -0
- data/lib/tasker/concerns/event_publisher.rb +716 -0
- data/lib/tasker/concerns/idempotent_state_transitions.rb +128 -0
- data/lib/tasker/concerns/state_machine_base.rb +218 -0
- data/lib/tasker/concerns/structured_logging.rb +387 -0
- data/lib/tasker/configuration.rb +325 -0
- data/lib/tasker/constants/event_definitions.rb +147 -0
- data/lib/tasker/constants/registry_events.rb +54 -0
- data/lib/tasker/constants.rb +417 -0
- data/lib/tasker/engine.rb +90 -0
- data/lib/tasker/errors.rb +90 -0
- data/lib/tasker/events/catalog.rb +432 -0
- data/lib/tasker/events/custom_registry.rb +175 -0
- data/lib/tasker/events/definition_loader.rb +199 -0
- data/lib/tasker/events/event_payload_builder.rb +461 -0
- data/lib/tasker/events/publisher.rb +149 -0
- data/lib/tasker/events/subscribers/base_subscriber.rb +601 -0
- data/lib/tasker/events/subscribers/metrics_subscriber.rb +120 -0
- data/lib/tasker/events/subscribers/telemetry_subscriber.rb +462 -0
- data/lib/tasker/events/subscription_loader.rb +161 -0
- data/lib/tasker/events.rb +37 -0
- data/lib/tasker/functions/function_based_analytics_metrics.rb +103 -0
- data/lib/tasker/functions/function_based_dependency_levels.rb +54 -0
- data/lib/tasker/functions/function_based_slowest_steps.rb +84 -0
- data/lib/tasker/functions/function_based_slowest_tasks.rb +84 -0
- data/lib/tasker/functions/function_based_step_readiness_status.rb +183 -0
- data/lib/tasker/functions/function_based_system_health_counts.rb +94 -0
- data/lib/tasker/functions/function_based_task_execution_context.rb +148 -0
- data/lib/tasker/functions/function_wrapper.rb +42 -0
- data/lib/tasker/functions.rb +12 -0
- data/lib/tasker/handler_factory.rb +322 -0
- data/lib/tasker/health/readiness_checker.rb +186 -0
- data/lib/tasker/health/status_checker.rb +203 -0
- data/lib/tasker/identity_strategy.rb +38 -0
- data/lib/tasker/logging/correlation_id_generator.rb +120 -0
- data/lib/tasker/orchestration/backoff_calculator.rb +184 -0
- data/lib/tasker/orchestration/connection_builder.rb +122 -0
- data/lib/tasker/orchestration/connection_pool_intelligence.rb +177 -0
- data/lib/tasker/orchestration/coordinator.rb +119 -0
- data/lib/tasker/orchestration/future_state_analyzer.rb +137 -0
- data/lib/tasker/orchestration/plugin_integration.rb +124 -0
- data/lib/tasker/orchestration/response_processor.rb +168 -0
- data/lib/tasker/orchestration/retry_header_parser.rb +78 -0
- data/lib/tasker/orchestration/step_executor.rb +941 -0
- data/lib/tasker/orchestration/step_sequence_factory.rb +67 -0
- data/lib/tasker/orchestration/task_finalizer.rb +564 -0
- data/lib/tasker/orchestration/task_initializer.rb +140 -0
- data/lib/tasker/orchestration/task_reenqueuer.rb +71 -0
- data/lib/tasker/orchestration/viable_step_discovery.rb +65 -0
- data/lib/tasker/orchestration/workflow_coordinator.rb +294 -0
- data/lib/tasker/orchestration.rb +45 -0
- data/lib/tasker/railtie.rb +9 -0
- data/lib/tasker/registry/base_registry.rb +177 -0
- data/lib/tasker/registry/event_publisher.rb +91 -0
- data/lib/tasker/registry/interface_validator.rb +140 -0
- data/lib/tasker/registry/statistics_collector.rb +381 -0
- data/lib/tasker/registry/subscriber_registry.rb +285 -0
- data/lib/tasker/registry.rb +22 -0
- data/lib/tasker/state_machine/step_state_machine.rb +508 -0
- data/lib/tasker/state_machine/task_state_machine.rb +192 -0
- data/lib/tasker/state_machine.rb +83 -0
- data/lib/tasker/step_handler/api.rb +410 -0
- data/lib/tasker/step_handler/base.rb +206 -0
- data/lib/tasker/task_builder.rb +432 -0
- data/lib/tasker/task_handler/class_methods.rb +324 -0
- data/lib/tasker/task_handler/instance_methods.rb +293 -0
- data/lib/tasker/task_handler/step_group.rb +182 -0
- data/lib/tasker/task_handler.rb +43 -0
- data/lib/tasker/telemetry/event_mapping.rb +126 -0
- data/lib/tasker/telemetry/event_router.rb +318 -0
- data/lib/tasker/telemetry/events/export_events.rb +38 -0
- data/lib/tasker/telemetry/export_coordinator.rb +497 -0
- data/lib/tasker/telemetry/intelligent_cache_manager.rb +508 -0
- data/lib/tasker/telemetry/log_backend.rb +224 -0
- data/lib/tasker/telemetry/metric_types.rb +368 -0
- data/lib/tasker/telemetry/metrics_backend.rb +1227 -0
- data/lib/tasker/telemetry/metrics_export_service.rb +392 -0
- data/lib/tasker/telemetry/plugin_registry.rb +333 -0
- data/lib/tasker/telemetry/plugins/base_exporter.rb +246 -0
- data/lib/tasker/telemetry/plugins/csv_exporter.rb +198 -0
- data/lib/tasker/telemetry/plugins/json_exporter.rb +141 -0
- data/lib/tasker/telemetry/prometheus_exporter.rb +249 -0
- data/lib/tasker/telemetry/trace_backend.rb +186 -0
- data/lib/tasker/telemetry.rb +59 -0
- data/lib/tasker/types/auth_config.rb +81 -0
- data/lib/tasker/types/backoff_config.rb +142 -0
- data/lib/tasker/types/cache_config.rb +257 -0
- data/lib/tasker/types/database_config.rb +39 -0
- data/lib/tasker/types/dependency_graph.rb +225 -0
- data/lib/tasker/types/dependency_graph_config.rb +149 -0
- data/lib/tasker/types/engine_config.rb +131 -0
- data/lib/tasker/types/execution_config.rb +289 -0
- data/lib/tasker/types/health_config.rb +84 -0
- data/lib/tasker/types/step_sequence.rb +24 -0
- data/lib/tasker/types/step_template.rb +63 -0
- data/lib/tasker/types/task_request.rb +60 -0
- data/lib/tasker/types/telemetry_config.rb +273 -0
- data/lib/tasker/types.rb +64 -0
- data/lib/tasker/version.rb +7 -0
- data/lib/tasker.rb +82 -0
- data/lib/tasks/tasker_tasks.rake +302 -0
- metadata +958 -0
@@ -0,0 +1,1297 @@
|
|
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::CacheStrategy
|
8
|
+
|
9
|
+
— 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::CacheStrategy";
|
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 (C)</a> »
|
40
|
+
<span class='title'><span class='object_link'><a href="../Tasker.html" title="Tasker (module)">Tasker</a></span></span>
|
41
|
+
»
|
42
|
+
<span class="title">CacheStrategy</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::CacheStrategy
|
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::CacheStrategy</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)">Tasker::Concerns::StructuredLogging</a></span></dd>
|
93
|
+
</dl>
|
94
|
+
|
95
|
+
|
96
|
+
|
97
|
+
|
98
|
+
|
99
|
+
|
100
|
+
<dl>
|
101
|
+
<dt>Defined in:</dt>
|
102
|
+
<dd>lib/tasker/cache_strategy.rb</dd>
|
103
|
+
</dl>
|
104
|
+
|
105
|
+
</div>
|
106
|
+
|
107
|
+
<h2>Overview</h2><div class="docstring">
|
108
|
+
<div class="discussion">
|
109
|
+
|
110
|
+
<p>Unified cache capability detection and strategy management</p>
|
111
|
+
|
112
|
+
<p>This class consolidates cache store introspection from MetricsBackend and IntelligentCacheManager into a single, comprehensive system that:</p>
|
113
|
+
<ol><li>
|
114
|
+
<p>Detects capabilities of all major Rails cache stores</p>
|
115
|
+
</li><li>
|
116
|
+
<p>Supports Solid Cache and other modern Rails cache stores</p>
|
117
|
+
</li><li>
|
118
|
+
<p>Provides extensibility for custom cache implementations</p>
|
119
|
+
</li><li>
|
120
|
+
<p>Offers a consistent API for cache strategy selection</p>
|
121
|
+
</li></ol>
|
122
|
+
|
123
|
+
<p><strong>Phase 2.1.1 Enhancement: Hybrid Cache Store Detection System</strong> Combines frozen constants for built-in Rails cache stores with declared capabilities for custom cache stores, creating a robust and extensible architecture.</p>
|
124
|
+
|
125
|
+
<p>Detection Priority Order: 1. Declared capabilities (highest priority) - explicit developer declarations 2. Built-in store constants - fast, reliable detection for known stores 3. Custom detectors - pattern-based registration for legacy compatibility 4. Runtime detection - conservative fallback for unknown stores</p>
|
126
|
+
|
127
|
+
|
128
|
+
</div>
|
129
|
+
</div>
|
130
|
+
<div class="tags">
|
131
|
+
|
132
|
+
<div class="examples">
|
133
|
+
<h4 class="tag_title">Examples:</h4>
|
134
|
+
|
135
|
+
|
136
|
+
<h5 class="example_title"><div class='inline'>
|
137
|
+
<p>Basic usage</p>
|
138
|
+
</div></h5>
|
139
|
+
|
140
|
+
<pre class="example code"><code><span class='id identifier rubyid_strategy'>strategy</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='op'>::</span><span class='const'>CacheStrategy</span><span class='period'>.</span><span class='id identifier rubyid_detect'><span class='object_link'><a href="#detect-class_method" title="Tasker::CacheStrategy.detect (method)">detect</a></span></span>
|
141
|
+
<span class='id identifier rubyid_strategy'>strategy</span><span class='period'>.</span><span class='id identifier rubyid_coordination_mode'>coordination_mode</span> <span class='comment'># => :distributed_atomic
|
142
|
+
</span><span class='id identifier rubyid_strategy'>strategy</span><span class='period'>.</span><span class='id identifier rubyid_supports?'>supports?</span><span class='lparen'>(</span><span class='symbol'>:locking</span><span class='rparen'>)</span> <span class='comment'># => true</span></code></pre>
|
143
|
+
|
144
|
+
|
145
|
+
<h5 class="example_title"><div class='inline'>
|
146
|
+
<p>Custom detector registration</p>
|
147
|
+
</div></h5>
|
148
|
+
|
149
|
+
<pre class="example code"><code><span class='const'><span class='object_link'><a href="../Tasker.html" title="Tasker (module)">Tasker</a></span></span><span class='op'>::</span><span class='const'>CacheStrategy</span><span class='period'>.</span><span class='id identifier rubyid_register_detector'><span class='object_link'><a href="#register_detector-class_method" title="Tasker::CacheStrategy.register_detector (method)">register_detector</a></span></span><span class='lparen'>(</span><span class='tstring'><span class='regexp_beg'>/</span><span class='tstring_content'>MyCache</span><span class='regexp_end'>/</span></span><span class='comma'>,</span> <span class='tlambda'>-></span><span class='lparen'>(</span><span class='id identifier rubyid_store'>store</span><span class='rparen'>)</span> <span class='tlambeg'>{</span>
|
150
|
+
<span class='lbrace'>{</span> <span class='label'>distributed:</span> <span class='kw'>true</span><span class='comma'>,</span> <span class='label'>custom_feature:</span> <span class='kw'>true</span> <span class='rbrace'>}</span>
|
151
|
+
<span class='rbrace'>}</span><span class='rparen'>)</span></code></pre>
|
152
|
+
|
153
|
+
|
154
|
+
<h5 class="example_title"><div class='inline'>
|
155
|
+
<p>Custom cache store with capabilities</p>
|
156
|
+
</div></h5>
|
157
|
+
|
158
|
+
<pre class="example code"><code><span class='kw'>class</span> <span class='const'>MyAwesomeCacheStore</span> <span class='op'><</span> <span class='const'>ActiveSupport</span><span class='op'>::</span><span class='const'>Cache</span><span class='op'>::</span><span class='const'>Store</span>
|
159
|
+
<span class='id identifier rubyid_include'>include</span> <span class='const'><span class='object_link'><a href="../Tasker.html" title="Tasker (module)">Tasker</a></span></span><span class='op'>::</span><span class='const'><span class='object_link'><a href="CacheCapabilities.html" title="Tasker::CacheCapabilities (module)">CacheCapabilities</a></span></span>
|
160
|
+
<span class='id identifier rubyid_supports_distributed_caching!'>supports_distributed_caching!</span>
|
161
|
+
<span class='id identifier rubyid_supports_atomic_increment!'>supports_atomic_increment!</span>
|
162
|
+
<span class='kw'>end</span>
|
163
|
+
|
164
|
+
<span class='comment'># Configure Rails to use your custom store
|
165
|
+
</span><span class='const'>Rails</span><span class='period'>.</span><span class='id identifier rubyid_application'>application</span><span class='period'>.</span><span class='id identifier rubyid_configure'>configure</span> <span class='kw'>do</span>
|
166
|
+
<span class='id identifier rubyid_config'>config</span><span class='period'>.</span><span class='id identifier rubyid_cache_store'>cache_store</span> <span class='op'>=</span> <span class='const'>MyAwesomeCacheStore</span><span class='period'>.</span><span class='id identifier rubyid_new'>new</span>
|
167
|
+
<span class='kw'>end</span></code></pre>
|
168
|
+
|
169
|
+
|
170
|
+
<h5 class="example_title"><div class='inline'>
|
171
|
+
<p>Direct instantiation</p>
|
172
|
+
</div></h5>
|
173
|
+
|
174
|
+
<pre class="example code"><code><span class='id identifier rubyid_strategy'>strategy</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='op'>::</span><span class='const'>CacheStrategy</span><span class='period'>.</span><span class='id identifier rubyid_new'><span class='object_link'><a href="#initialize-instance_method" title="Tasker::CacheStrategy#initialize (method)">new</a></span></span></code></pre>
|
175
|
+
|
176
|
+
</div>
|
177
|
+
|
178
|
+
|
179
|
+
</div>
|
180
|
+
|
181
|
+
<h2>
|
182
|
+
Constant Summary
|
183
|
+
<small><a href="#" class="constants_summary_toggle">collapse</a></small>
|
184
|
+
</h2>
|
185
|
+
|
186
|
+
<dl class="constants">
|
187
|
+
|
188
|
+
<dt id="COORDINATION_STRATEGIES-constant" class="">COORDINATION_STRATEGIES =
|
189
|
+
<div class="docstring">
|
190
|
+
<div class="discussion">
|
191
|
+
|
192
|
+
<p>Cache store coordination strategies</p>
|
193
|
+
|
194
|
+
|
195
|
+
</div>
|
196
|
+
</div>
|
197
|
+
<div class="tags">
|
198
|
+
|
199
|
+
|
200
|
+
</div>
|
201
|
+
</dt>
|
202
|
+
<dd><pre class="code"><span class='lbrace'>{</span>
|
203
|
+
<span class='label'>distributed_atomic:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>Full distributed coordination with atomic operations</span><span class='tstring_end'>'</span></span><span class='comma'>,</span>
|
204
|
+
<span class='label'>distributed_basic:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>Basic distributed coordination with read-modify-write</span><span class='tstring_end'>'</span></span><span class='comma'>,</span>
|
205
|
+
<span class='label'>local_only:</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>Local-only coordination for single-process deployments</span><span class='tstring_end'>'</span></span>
|
206
|
+
<span class='rbrace'>}</span><span class='period'>.</span><span class='id identifier rubyid_freeze'>freeze</span></pre></dd>
|
207
|
+
|
208
|
+
<dt id="DISTRIBUTED_CACHE_STORES-constant" class="">DISTRIBUTED_CACHE_STORES =
|
209
|
+
<div class="docstring">
|
210
|
+
<div class="discussion">
|
211
|
+
|
212
|
+
<p>✅ CONSTANTS: Official Rails cache store class names (validated against Rails 8.0+ docs) These provide O(1) lookup performance for built-in Rails cache stores</p>
|
213
|
+
|
214
|
+
|
215
|
+
</div>
|
216
|
+
</div>
|
217
|
+
<div class="tags">
|
218
|
+
|
219
|
+
|
220
|
+
</div>
|
221
|
+
</dt>
|
222
|
+
<dd><pre class="code"><span class='qwords_beg'>%w[</span><span class='words_sep'>
|
223
|
+
</span><span class='tstring_content'>ActiveSupport::Cache::RedisCacheStore</span><span class='words_sep'>
|
224
|
+
</span><span class='tstring_content'>ActiveSupport::Cache::MemCacheStore</span><span class='words_sep'>
|
225
|
+
</span><span class='tstring_content'>SolidCache::Store</span><span class='words_sep'>
|
226
|
+
</span><span class='tstring_end'>]</span></span><span class='period'>.</span><span class='id identifier rubyid_freeze'>freeze</span></pre></dd>
|
227
|
+
|
228
|
+
<dt id="ATOMIC_INCREMENT_STORES-constant" class="">ATOMIC_INCREMENT_STORES =
|
229
|
+
|
230
|
+
</dt>
|
231
|
+
<dd><pre class="code"><span class='qwords_beg'>%w[</span><span class='words_sep'>
|
232
|
+
</span><span class='tstring_content'>ActiveSupport::Cache::RedisCacheStore</span><span class='words_sep'>
|
233
|
+
</span><span class='tstring_content'>ActiveSupport::Cache::MemCacheStore</span><span class='words_sep'>
|
234
|
+
</span><span class='tstring_content'>SolidCache::Store</span><span class='words_sep'>
|
235
|
+
</span><span class='tstring_end'>]</span></span><span class='period'>.</span><span class='id identifier rubyid_freeze'>freeze</span></pre></dd>
|
236
|
+
|
237
|
+
<dt id="LOCKING_CAPABLE_STORES-constant" class="">LOCKING_CAPABLE_STORES =
|
238
|
+
|
239
|
+
</dt>
|
240
|
+
<dd><pre class="code"><span class='qwords_beg'>%w[</span><span class='words_sep'>
|
241
|
+
</span><span class='tstring_content'>ActiveSupport::Cache::RedisCacheStore</span><span class='words_sep'>
|
242
|
+
</span><span class='tstring_content'>SolidCache::Store</span><span class='words_sep'>
|
243
|
+
</span><span class='tstring_end'>]</span></span><span class='period'>.</span><span class='id identifier rubyid_freeze'>freeze</span></pre></dd>
|
244
|
+
|
245
|
+
<dt id="LOCAL_CACHE_STORES-constant" class="">LOCAL_CACHE_STORES =
|
246
|
+
|
247
|
+
</dt>
|
248
|
+
<dd><pre class="code"><span class='qwords_beg'>%w[</span><span class='words_sep'>
|
249
|
+
</span><span class='tstring_content'>ActiveSupport::Cache::MemoryStore</span><span class='words_sep'>
|
250
|
+
</span><span class='tstring_content'>ActiveSupport::Cache::FileStore</span><span class='words_sep'>
|
251
|
+
</span><span class='tstring_content'>ActiveSupport::Cache::NullStore</span><span class='words_sep'>
|
252
|
+
</span><span class='tstring_end'>]</span></span><span class='period'>.</span><span class='id identifier rubyid_freeze'>freeze</span></pre></dd>
|
253
|
+
|
254
|
+
</dl>
|
255
|
+
|
256
|
+
|
257
|
+
|
258
|
+
|
259
|
+
|
260
|
+
|
261
|
+
<h3 class="inherited">Constants included
|
262
|
+
from <span class='object_link'><a href="Concerns/StructuredLogging.html" title="Tasker::Concerns::StructuredLogging (module)">Tasker::Concerns::StructuredLogging</a></span></h3>
|
263
|
+
<p class="inherited"><span class='object_link'><a href="Concerns/StructuredLogging.html#CORRELATION_ID_KEY-constant" title="Tasker::Concerns::StructuredLogging::CORRELATION_ID_KEY (constant)">Tasker::Concerns::StructuredLogging::CORRELATION_ID_KEY</a></span></p>
|
264
|
+
|
265
|
+
|
266
|
+
<h2>Instance Attribute Summary <small><a href="#" class="summary_toggle">collapse</a></small></h2>
|
267
|
+
<ul class="summary">
|
268
|
+
|
269
|
+
<li class="public ">
|
270
|
+
<span class="summary_signature">
|
271
|
+
|
272
|
+
<a href="#capabilities-instance_method" title="#capabilities (instance method)">#<strong>capabilities</strong> ⇒ Object </a>
|
273
|
+
|
274
|
+
|
275
|
+
|
276
|
+
</span>
|
277
|
+
|
278
|
+
|
279
|
+
|
280
|
+
|
281
|
+
<span class="note title readonly">readonly</span>
|
282
|
+
|
283
|
+
|
284
|
+
|
285
|
+
|
286
|
+
|
287
|
+
|
288
|
+
|
289
|
+
|
290
|
+
|
291
|
+
<span class="summary_desc"><div class='inline'>
|
292
|
+
<p>Returns the value of attribute capabilities.</p>
|
293
|
+
</div></span>
|
294
|
+
|
295
|
+
</li>
|
296
|
+
|
297
|
+
|
298
|
+
<li class="public ">
|
299
|
+
<span class="summary_signature">
|
300
|
+
|
301
|
+
<a href="#coordination_mode-instance_method" title="#coordination_mode (instance method)">#<strong>coordination_mode</strong> ⇒ Object </a>
|
302
|
+
|
303
|
+
|
304
|
+
|
305
|
+
</span>
|
306
|
+
|
307
|
+
|
308
|
+
|
309
|
+
|
310
|
+
<span class="note title readonly">readonly</span>
|
311
|
+
|
312
|
+
|
313
|
+
|
314
|
+
|
315
|
+
|
316
|
+
|
317
|
+
|
318
|
+
|
319
|
+
|
320
|
+
<span class="summary_desc"><div class='inline'>
|
321
|
+
<p>Returns the value of attribute coordination_mode.</p>
|
322
|
+
</div></span>
|
323
|
+
|
324
|
+
</li>
|
325
|
+
|
326
|
+
|
327
|
+
<li class="public ">
|
328
|
+
<span class="summary_signature">
|
329
|
+
|
330
|
+
<a href="#instance_id-instance_method" title="#instance_id (instance method)">#<strong>instance_id</strong> ⇒ Object </a>
|
331
|
+
|
332
|
+
|
333
|
+
|
334
|
+
</span>
|
335
|
+
|
336
|
+
|
337
|
+
|
338
|
+
|
339
|
+
<span class="note title readonly">readonly</span>
|
340
|
+
|
341
|
+
|
342
|
+
|
343
|
+
|
344
|
+
|
345
|
+
|
346
|
+
|
347
|
+
|
348
|
+
|
349
|
+
<span class="summary_desc"><div class='inline'>
|
350
|
+
<p>Returns the value of attribute instance_id.</p>
|
351
|
+
</div></span>
|
352
|
+
|
353
|
+
</li>
|
354
|
+
|
355
|
+
|
356
|
+
<li class="public ">
|
357
|
+
<span class="summary_signature">
|
358
|
+
|
359
|
+
<a href="#store-instance_method" title="#store (instance method)">#<strong>store</strong> ⇒ Object </a>
|
360
|
+
|
361
|
+
|
362
|
+
|
363
|
+
</span>
|
364
|
+
|
365
|
+
|
366
|
+
|
367
|
+
|
368
|
+
<span class="note title readonly">readonly</span>
|
369
|
+
|
370
|
+
|
371
|
+
|
372
|
+
|
373
|
+
|
374
|
+
|
375
|
+
|
376
|
+
|
377
|
+
|
378
|
+
<span class="summary_desc"><div class='inline'>
|
379
|
+
<p>Returns the value of attribute store.</p>
|
380
|
+
</div></span>
|
381
|
+
|
382
|
+
</li>
|
383
|
+
|
384
|
+
|
385
|
+
<li class="public ">
|
386
|
+
<span class="summary_signature">
|
387
|
+
|
388
|
+
<a href="#store_class_name-instance_method" title="#store_class_name (instance method)">#<strong>store_class_name</strong> ⇒ Object </a>
|
389
|
+
|
390
|
+
|
391
|
+
|
392
|
+
</span>
|
393
|
+
|
394
|
+
|
395
|
+
|
396
|
+
|
397
|
+
<span class="note title readonly">readonly</span>
|
398
|
+
|
399
|
+
|
400
|
+
|
401
|
+
|
402
|
+
|
403
|
+
|
404
|
+
|
405
|
+
|
406
|
+
|
407
|
+
<span class="summary_desc"><div class='inline'>
|
408
|
+
<p>Returns the value of attribute store_class_name.</p>
|
409
|
+
</div></span>
|
410
|
+
|
411
|
+
</li>
|
412
|
+
|
413
|
+
|
414
|
+
</ul>
|
415
|
+
|
416
|
+
|
417
|
+
|
418
|
+
|
419
|
+
|
420
|
+
<h2>
|
421
|
+
Class Method Summary
|
422
|
+
<small><a href="#" class="summary_toggle">collapse</a></small>
|
423
|
+
</h2>
|
424
|
+
|
425
|
+
<ul class="summary">
|
426
|
+
|
427
|
+
<li class="public ">
|
428
|
+
<span class="summary_signature">
|
429
|
+
|
430
|
+
<a href="#clear_detectors!-class_method" title="clear_detectors! (class method)">.<strong>clear_detectors!</strong> ⇒ Object </a>
|
431
|
+
|
432
|
+
|
433
|
+
|
434
|
+
</span>
|
435
|
+
|
436
|
+
|
437
|
+
|
438
|
+
|
439
|
+
|
440
|
+
|
441
|
+
|
442
|
+
|
443
|
+
|
444
|
+
<span class="summary_desc"><div class='inline'>
|
445
|
+
<p>Clear all registered detectors (primarily for testing).</p>
|
446
|
+
</div></span>
|
447
|
+
|
448
|
+
</li>
|
449
|
+
|
450
|
+
|
451
|
+
<li class="public ">
|
452
|
+
<span class="summary_signature">
|
453
|
+
|
454
|
+
<a href="#detect-class_method" title="detect (class method)">.<strong>detect</strong> ⇒ Tasker::CacheStrategy </a>
|
455
|
+
|
456
|
+
|
457
|
+
|
458
|
+
</span>
|
459
|
+
|
460
|
+
|
461
|
+
|
462
|
+
|
463
|
+
|
464
|
+
|
465
|
+
|
466
|
+
|
467
|
+
|
468
|
+
<span class="summary_desc"><div class='inline'>
|
469
|
+
<p>Detect cache strategy for the current Rails.cache store.</p>
|
470
|
+
</div></span>
|
471
|
+
|
472
|
+
</li>
|
473
|
+
|
474
|
+
|
475
|
+
<li class="public ">
|
476
|
+
<span class="summary_signature">
|
477
|
+
|
478
|
+
<a href="#register_detector-class_method" title="register_detector (class method)">.<strong>register_detector</strong>(pattern, detector) ⇒ Object </a>
|
479
|
+
|
480
|
+
|
481
|
+
|
482
|
+
</span>
|
483
|
+
|
484
|
+
|
485
|
+
|
486
|
+
|
487
|
+
|
488
|
+
|
489
|
+
|
490
|
+
|
491
|
+
|
492
|
+
<span class="summary_desc"><div class='inline'>
|
493
|
+
<p>Register a custom cache store detector.</p>
|
494
|
+
</div></span>
|
495
|
+
|
496
|
+
</li>
|
497
|
+
|
498
|
+
|
499
|
+
</ul>
|
500
|
+
|
501
|
+
<h2>
|
502
|
+
Instance Method Summary
|
503
|
+
<small><a href="#" class="summary_toggle">collapse</a></small>
|
504
|
+
</h2>
|
505
|
+
|
506
|
+
<ul class="summary">
|
507
|
+
|
508
|
+
<li class="public ">
|
509
|
+
<span class="summary_signature">
|
510
|
+
|
511
|
+
<a href="#export_capabilities-instance_method" title="#export_capabilities (instance method)">#<strong>export_capabilities</strong> ⇒ Hash </a>
|
512
|
+
|
513
|
+
|
514
|
+
|
515
|
+
</span>
|
516
|
+
|
517
|
+
|
518
|
+
|
519
|
+
|
520
|
+
|
521
|
+
|
522
|
+
|
523
|
+
|
524
|
+
|
525
|
+
<span class="summary_desc"><div class='inline'>
|
526
|
+
<p>Export capabilities for backward compatibility.</p>
|
527
|
+
</div></span>
|
528
|
+
|
529
|
+
</li>
|
530
|
+
|
531
|
+
|
532
|
+
<li class="public ">
|
533
|
+
<span class="summary_signature">
|
534
|
+
|
535
|
+
<a href="#initialize-instance_method" title="#initialize (instance method)">#<strong>initialize</strong> ⇒ CacheStrategy </a>
|
536
|
+
|
537
|
+
|
538
|
+
|
539
|
+
</span>
|
540
|
+
|
541
|
+
|
542
|
+
<span class="note title constructor">constructor</span>
|
543
|
+
|
544
|
+
|
545
|
+
|
546
|
+
|
547
|
+
|
548
|
+
|
549
|
+
|
550
|
+
|
551
|
+
<span class="summary_desc"><div class='inline'>
|
552
|
+
<p>Create a strategy for the current Rails.cache store.</p>
|
553
|
+
</div></span>
|
554
|
+
|
555
|
+
</li>
|
556
|
+
|
557
|
+
|
558
|
+
<li class="public ">
|
559
|
+
<span class="summary_signature">
|
560
|
+
|
561
|
+
<a href="#supports%3F-instance_method" title="#supports? (instance method)">#<strong>supports?</strong>(capability) ⇒ Boolean </a>
|
562
|
+
|
563
|
+
|
564
|
+
|
565
|
+
</span>
|
566
|
+
|
567
|
+
|
568
|
+
|
569
|
+
|
570
|
+
|
571
|
+
|
572
|
+
|
573
|
+
|
574
|
+
|
575
|
+
<span class="summary_desc"><div class='inline'>
|
576
|
+
<p>Check if store supports a specific capability.</p>
|
577
|
+
</div></span>
|
578
|
+
|
579
|
+
</li>
|
580
|
+
|
581
|
+
|
582
|
+
</ul>
|
583
|
+
|
584
|
+
|
585
|
+
|
586
|
+
|
587
|
+
|
588
|
+
|
589
|
+
|
590
|
+
|
591
|
+
|
592
|
+
|
593
|
+
|
594
|
+
<h3 class="inherited">Methods included from <span class='object_link'><a href="Concerns/StructuredLogging.html" title="Tasker::Concerns::StructuredLogging (module)">Tasker::Concerns::StructuredLogging</a></span></h3>
|
595
|
+
<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>
|
596
|
+
|
597
|
+
<div id="constructor_details" class="method_details_list">
|
598
|
+
<h2>Constructor Details</h2>
|
599
|
+
|
600
|
+
<div class="method_details first">
|
601
|
+
<h3 class="signature first" id="initialize-instance_method">
|
602
|
+
|
603
|
+
#<strong>initialize</strong> ⇒ <tt><span class='object_link'><a href="" title="Tasker::CacheStrategy (class)">CacheStrategy</a></span></tt>
|
604
|
+
|
605
|
+
|
606
|
+
|
607
|
+
|
608
|
+
|
609
|
+
</h3><div class="docstring">
|
610
|
+
<div class="discussion">
|
611
|
+
|
612
|
+
<p>Create a strategy for the current Rails.cache store</p>
|
613
|
+
|
614
|
+
<p>The cache strategy always analyzes Rails.cache, which is the single source of truth for caching in Rails applications. Custom cache stores should be configured through Rails.cache and declare their capabilities via the CacheCapabilities module.</p>
|
615
|
+
|
616
|
+
|
617
|
+
</div>
|
618
|
+
</div>
|
619
|
+
<div class="tags">
|
620
|
+
|
621
|
+
|
622
|
+
</div><table class="source_code">
|
623
|
+
<tr>
|
624
|
+
<td>
|
625
|
+
<pre class="lines">
|
626
|
+
|
627
|
+
|
628
|
+
114
|
629
|
+
115
|
630
|
+
116
|
631
|
+
117
|
632
|
+
118
|
633
|
+
119
|
634
|
+
120
|
635
|
+
121
|
636
|
+
122
|
637
|
+
123
|
638
|
+
124
|
639
|
+
125
|
640
|
+
126
|
641
|
+
127
|
642
|
+
128
|
643
|
+
129
|
644
|
+
130
|
645
|
+
131
|
646
|
+
132
|
647
|
+
133
|
648
|
+
134
|
649
|
+
135
|
650
|
+
136
|
651
|
+
137
|
652
|
+
138
|
653
|
+
139
|
654
|
+
140
|
655
|
+
141
|
656
|
+
142
|
657
|
+
143
|
658
|
+
144
|
659
|
+
145
|
660
|
+
146
|
661
|
+
147
|
662
|
+
148
|
663
|
+
149
|
664
|
+
150
|
665
|
+
151
|
666
|
+
152
|
667
|
+
153
|
668
|
+
154
|
669
|
+
155
|
670
|
+
156
|
671
|
+
157
|
672
|
+
158
|
673
|
+
159
|
674
|
+
160
|
675
|
+
161
|
676
|
+
162
|
677
|
+
163</pre>
|
678
|
+
</td>
|
679
|
+
<td>
|
680
|
+
<pre class="code"><span class="info file"># File 'lib/tasker/cache_strategy.rb', line 114</span>
|
681
|
+
|
682
|
+
<span class='kw'>def</span> <span class='id identifier rubyid_initialize'>initialize</span>
|
683
|
+
<span class='ivar'>@detector_registry</span> <span class='op'>=</span> <span class='const'><span class='object_link'><a href="DetectorRegistry.html" title="Tasker::DetectorRegistry (class)">DetectorRegistry</a></span></span><span class='period'>.</span><span class='id identifier rubyid_instance'>instance</span>
|
684
|
+
<span class='ivar'>@instance_id</span> <span class='op'>=</span> <span class='id identifier rubyid_generate_instance_id'>generate_instance_id</span>
|
685
|
+
|
686
|
+
<span class='comment'># Handle Rails.cache unavailability gracefully
|
687
|
+
</span> <span class='kw'>begin</span>
|
688
|
+
<span class='ivar'>@store</span> <span class='op'>=</span> <span class='const'>Rails</span><span class='period'>.</span><span class='id identifier rubyid_cache'>cache</span>
|
689
|
+
<span class='ivar'>@store_class_name</span> <span class='op'>=</span> <span class='ivar'>@store</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>
|
690
|
+
<span class='kw'>rescue</span> <span class='const'>StandardError</span> <span class='op'>=></span> <span class='id identifier rubyid_e'>e</span>
|
691
|
+
<span class='id identifier rubyid_log_structured'>log_structured</span><span class='lparen'>(</span><span class='symbol'>:warn</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>Rails.cache unavailable, using fallback configuration</span><span class='tstring_end'>'</span></span><span class='comma'>,</span>
|
692
|
+
<span class='label'>error:</span> <span class='id identifier rubyid_e'>e</span><span class='period'>.</span><span class='id identifier rubyid_message'>message</span><span class='comma'>,</span>
|
693
|
+
<span class='label'>instance_id:</span> <span class='ivar'>@instance_id</span><span class='rparen'>)</span>
|
694
|
+
<span class='ivar'>@store</span> <span class='op'>=</span> <span class='kw'>nil</span>
|
695
|
+
<span class='ivar'>@store_class_name</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>Unknown</span><span class='tstring_end'>'</span></span>
|
696
|
+
<span class='ivar'>@capabilities</span> <span class='op'>=</span> <span class='id identifier rubyid_default_capabilities'>default_capabilities</span>
|
697
|
+
<span class='ivar'>@coordination_mode</span> <span class='op'>=</span> <span class='symbol'>:local_only</span>
|
698
|
+
<span class='kw'>return</span>
|
699
|
+
<span class='kw'>end</span>
|
700
|
+
|
701
|
+
<span class='comment'># Generate cache key that includes store configuration
|
702
|
+
</span> <span class='id identifier rubyid_cache_key'>cache_key</span> <span class='op'>=</span> <span class='id identifier rubyid_generate_cache_key'>generate_cache_key</span><span class='lparen'>(</span><span class='ivar'>@store</span><span class='comma'>,</span> <span class='ivar'>@store_class_name</span><span class='rparen'>)</span>
|
703
|
+
|
704
|
+
<span class='comment'># Check for cached strategy first
|
705
|
+
</span> <span class='id identifier rubyid_cached'>cached</span> <span class='op'>=</span> <span class='ivar'>@detector_registry</span><span class='period'>.</span><span class='id identifier rubyid_cached_strategy_for'>cached_strategy_for</span><span class='lparen'>(</span><span class='id identifier rubyid_cache_key'>cache_key</span><span class='rparen'>)</span>
|
706
|
+
<span class='kw'>if</span> <span class='id identifier rubyid_cached'>cached</span>
|
707
|
+
<span class='ivar'>@capabilities</span> <span class='op'>=</span> <span class='id identifier rubyid_cached'>cached</span><span class='period'>.</span><span class='id identifier rubyid_capabilities'>capabilities</span>
|
708
|
+
<span class='ivar'>@coordination_mode</span> <span class='op'>=</span> <span class='id identifier rubyid_cached'>cached</span><span class='period'>.</span><span class='id identifier rubyid_coordination_mode'>coordination_mode</span>
|
709
|
+
<span class='kw'>else</span>
|
710
|
+
<span class='comment'># Detect capabilities with error handling
|
711
|
+
</span> <span class='kw'>begin</span>
|
712
|
+
<span class='ivar'>@capabilities</span> <span class='op'>=</span> <span class='id identifier rubyid_detect_capabilities'>detect_capabilities</span>
|
713
|
+
<span class='ivar'>@coordination_mode</span> <span class='op'>=</span> <span class='id identifier rubyid_select_coordination_strategy'>select_coordination_strategy</span>
|
714
|
+
|
715
|
+
<span class='comment'># Cache this strategy instance
|
716
|
+
</span> <span class='ivar'>@detector_registry</span><span class='period'>.</span><span class='id identifier rubyid_cache_strategy_for'>cache_strategy_for</span><span class='lparen'>(</span><span class='id identifier rubyid_cache_key'>cache_key</span><span class='comma'>,</span> <span class='kw'>self</span><span class='rparen'>)</span>
|
717
|
+
<span class='kw'>rescue</span> <span class='const'>StandardError</span> <span class='op'>=></span> <span class='id identifier rubyid_e'>e</span>
|
718
|
+
<span class='id identifier rubyid_log_structured'>log_structured</span><span class='lparen'>(</span><span class='symbol'>:warn</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>Cache detection failed</span><span class='tstring_end'>'</span></span><span class='comma'>,</span>
|
719
|
+
<span class='label'>error:</span> <span class='id identifier rubyid_e'>e</span><span class='period'>.</span><span class='id identifier rubyid_message'>message</span><span class='comma'>,</span>
|
720
|
+
<span class='label'>store_class:</span> <span class='ivar'>@store_class_name</span><span class='comma'>,</span>
|
721
|
+
<span class='label'>instance_id:</span> <span class='ivar'>@instance_id</span><span class='rparen'>)</span>
|
722
|
+
<span class='id identifier rubyid_log_structured'>log_structured</span><span class='lparen'>(</span><span class='symbol'>:warn</span><span class='comma'>,</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>Falling back to local-only mode</span><span class='tstring_end'>'</span></span><span class='rparen'>)</span>
|
723
|
+
<span class='ivar'>@store_class_name</span> <span class='op'>=</span> <span class='tstring'><span class='tstring_beg'>'</span><span class='tstring_content'>Unknown</span><span class='tstring_end'>'</span></span>
|
724
|
+
<span class='ivar'>@capabilities</span> <span class='op'>=</span> <span class='id identifier rubyid_default_capabilities'>default_capabilities</span>
|
725
|
+
<span class='ivar'>@coordination_mode</span> <span class='op'>=</span> <span class='symbol'>:local_only</span>
|
726
|
+
<span class='kw'>return</span>
|
727
|
+
<span class='kw'>end</span>
|
728
|
+
<span class='kw'>end</span>
|
729
|
+
|
730
|
+
<span class='id identifier rubyid_log_strategy_detection'>log_strategy_detection</span>
|
731
|
+
<span class='kw'>end</span></pre>
|
732
|
+
</td>
|
733
|
+
</tr>
|
734
|
+
</table>
|
735
|
+
</div>
|
736
|
+
|
737
|
+
</div>
|
738
|
+
|
739
|
+
<div id="instance_attr_details" class="attr_details">
|
740
|
+
<h2>Instance Attribute Details</h2>
|
741
|
+
|
742
|
+
|
743
|
+
<span id=""></span>
|
744
|
+
<div class="method_details first">
|
745
|
+
<h3 class="signature first" id="capabilities-instance_method">
|
746
|
+
|
747
|
+
#<strong>capabilities</strong> ⇒ <tt>Object</tt> <span class="extras">(readonly)</span>
|
748
|
+
|
749
|
+
|
750
|
+
|
751
|
+
|
752
|
+
|
753
|
+
</h3><div class="docstring">
|
754
|
+
<div class="discussion">
|
755
|
+
|
756
|
+
<p>Returns the value of attribute capabilities.</p>
|
757
|
+
|
758
|
+
|
759
|
+
</div>
|
760
|
+
</div>
|
761
|
+
<div class="tags">
|
762
|
+
|
763
|
+
|
764
|
+
</div><table class="source_code">
|
765
|
+
<tr>
|
766
|
+
<td>
|
767
|
+
<pre class="lines">
|
768
|
+
|
769
|
+
|
770
|
+
86
|
771
|
+
87
|
772
|
+
88</pre>
|
773
|
+
</td>
|
774
|
+
<td>
|
775
|
+
<pre class="code"><span class="info file"># File 'lib/tasker/cache_strategy.rb', line 86</span>
|
776
|
+
|
777
|
+
<span class='kw'>def</span> <span class='id identifier rubyid_capabilities'>capabilities</span>
|
778
|
+
<span class='ivar'>@capabilities</span>
|
779
|
+
<span class='kw'>end</span></pre>
|
780
|
+
</td>
|
781
|
+
</tr>
|
782
|
+
</table>
|
783
|
+
</div>
|
784
|
+
|
785
|
+
|
786
|
+
<span id=""></span>
|
787
|
+
<div class="method_details ">
|
788
|
+
<h3 class="signature " id="coordination_mode-instance_method">
|
789
|
+
|
790
|
+
#<strong>coordination_mode</strong> ⇒ <tt>Object</tt> <span class="extras">(readonly)</span>
|
791
|
+
|
792
|
+
|
793
|
+
|
794
|
+
|
795
|
+
|
796
|
+
</h3><div class="docstring">
|
797
|
+
<div class="discussion">
|
798
|
+
|
799
|
+
<p>Returns the value of attribute coordination_mode.</p>
|
800
|
+
|
801
|
+
|
802
|
+
</div>
|
803
|
+
</div>
|
804
|
+
<div class="tags">
|
805
|
+
|
806
|
+
|
807
|
+
</div><table class="source_code">
|
808
|
+
<tr>
|
809
|
+
<td>
|
810
|
+
<pre class="lines">
|
811
|
+
|
812
|
+
|
813
|
+
86
|
814
|
+
87
|
815
|
+
88</pre>
|
816
|
+
</td>
|
817
|
+
<td>
|
818
|
+
<pre class="code"><span class="info file"># File 'lib/tasker/cache_strategy.rb', line 86</span>
|
819
|
+
|
820
|
+
<span class='kw'>def</span> <span class='id identifier rubyid_coordination_mode'>coordination_mode</span>
|
821
|
+
<span class='ivar'>@coordination_mode</span>
|
822
|
+
<span class='kw'>end</span></pre>
|
823
|
+
</td>
|
824
|
+
</tr>
|
825
|
+
</table>
|
826
|
+
</div>
|
827
|
+
|
828
|
+
|
829
|
+
<span id=""></span>
|
830
|
+
<div class="method_details ">
|
831
|
+
<h3 class="signature " id="instance_id-instance_method">
|
832
|
+
|
833
|
+
#<strong>instance_id</strong> ⇒ <tt>Object</tt> <span class="extras">(readonly)</span>
|
834
|
+
|
835
|
+
|
836
|
+
|
837
|
+
|
838
|
+
|
839
|
+
</h3><div class="docstring">
|
840
|
+
<div class="discussion">
|
841
|
+
|
842
|
+
<p>Returns the value of attribute instance_id.</p>
|
843
|
+
|
844
|
+
|
845
|
+
</div>
|
846
|
+
</div>
|
847
|
+
<div class="tags">
|
848
|
+
|
849
|
+
|
850
|
+
</div><table class="source_code">
|
851
|
+
<tr>
|
852
|
+
<td>
|
853
|
+
<pre class="lines">
|
854
|
+
|
855
|
+
|
856
|
+
86
|
857
|
+
87
|
858
|
+
88</pre>
|
859
|
+
</td>
|
860
|
+
<td>
|
861
|
+
<pre class="code"><span class="info file"># File 'lib/tasker/cache_strategy.rb', line 86</span>
|
862
|
+
|
863
|
+
<span class='kw'>def</span> <span class='id identifier rubyid_instance_id'>instance_id</span>
|
864
|
+
<span class='ivar'>@instance_id</span>
|
865
|
+
<span class='kw'>end</span></pre>
|
866
|
+
</td>
|
867
|
+
</tr>
|
868
|
+
</table>
|
869
|
+
</div>
|
870
|
+
|
871
|
+
|
872
|
+
<span id=""></span>
|
873
|
+
<div class="method_details ">
|
874
|
+
<h3 class="signature " id="store-instance_method">
|
875
|
+
|
876
|
+
#<strong>store</strong> ⇒ <tt>Object</tt> <span class="extras">(readonly)</span>
|
877
|
+
|
878
|
+
|
879
|
+
|
880
|
+
|
881
|
+
|
882
|
+
</h3><div class="docstring">
|
883
|
+
<div class="discussion">
|
884
|
+
|
885
|
+
<p>Returns the value of attribute store.</p>
|
886
|
+
|
887
|
+
|
888
|
+
</div>
|
889
|
+
</div>
|
890
|
+
<div class="tags">
|
891
|
+
|
892
|
+
|
893
|
+
</div><table class="source_code">
|
894
|
+
<tr>
|
895
|
+
<td>
|
896
|
+
<pre class="lines">
|
897
|
+
|
898
|
+
|
899
|
+
86
|
900
|
+
87
|
901
|
+
88</pre>
|
902
|
+
</td>
|
903
|
+
<td>
|
904
|
+
<pre class="code"><span class="info file"># File 'lib/tasker/cache_strategy.rb', line 86</span>
|
905
|
+
|
906
|
+
<span class='kw'>def</span> <span class='id identifier rubyid_store'>store</span>
|
907
|
+
<span class='ivar'>@store</span>
|
908
|
+
<span class='kw'>end</span></pre>
|
909
|
+
</td>
|
910
|
+
</tr>
|
911
|
+
</table>
|
912
|
+
</div>
|
913
|
+
|
914
|
+
|
915
|
+
<span id=""></span>
|
916
|
+
<div class="method_details ">
|
917
|
+
<h3 class="signature " id="store_class_name-instance_method">
|
918
|
+
|
919
|
+
#<strong>store_class_name</strong> ⇒ <tt>Object</tt> <span class="extras">(readonly)</span>
|
920
|
+
|
921
|
+
|
922
|
+
|
923
|
+
|
924
|
+
|
925
|
+
</h3><div class="docstring">
|
926
|
+
<div class="discussion">
|
927
|
+
|
928
|
+
<p>Returns the value of attribute store_class_name.</p>
|
929
|
+
|
930
|
+
|
931
|
+
</div>
|
932
|
+
</div>
|
933
|
+
<div class="tags">
|
934
|
+
|
935
|
+
|
936
|
+
</div><table class="source_code">
|
937
|
+
<tr>
|
938
|
+
<td>
|
939
|
+
<pre class="lines">
|
940
|
+
|
941
|
+
|
942
|
+
86
|
943
|
+
87
|
944
|
+
88</pre>
|
945
|
+
</td>
|
946
|
+
<td>
|
947
|
+
<pre class="code"><span class="info file"># File 'lib/tasker/cache_strategy.rb', line 86</span>
|
948
|
+
|
949
|
+
<span class='kw'>def</span> <span class='id identifier rubyid_store_class_name'>store_class_name</span>
|
950
|
+
<span class='ivar'>@store_class_name</span>
|
951
|
+
<span class='kw'>end</span></pre>
|
952
|
+
</td>
|
953
|
+
</tr>
|
954
|
+
</table>
|
955
|
+
</div>
|
956
|
+
|
957
|
+
</div>
|
958
|
+
|
959
|
+
|
960
|
+
<div id="class_method_details" class="method_details_list">
|
961
|
+
<h2>Class Method Details</h2>
|
962
|
+
|
963
|
+
|
964
|
+
<div class="method_details first">
|
965
|
+
<h3 class="signature first" id="clear_detectors!-class_method">
|
966
|
+
|
967
|
+
.<strong>clear_detectors!</strong> ⇒ <tt>Object</tt>
|
968
|
+
|
969
|
+
|
970
|
+
|
971
|
+
|
972
|
+
|
973
|
+
</h3><div class="docstring">
|
974
|
+
<div class="discussion">
|
975
|
+
|
976
|
+
<p>Clear all registered detectors (primarily for testing)</p>
|
977
|
+
|
978
|
+
|
979
|
+
</div>
|
980
|
+
</div>
|
981
|
+
<div class="tags">
|
982
|
+
|
983
|
+
|
984
|
+
</div><table class="source_code">
|
985
|
+
<tr>
|
986
|
+
<td>
|
987
|
+
<pre class="lines">
|
988
|
+
|
989
|
+
|
990
|
+
104
|
991
|
+
105
|
992
|
+
106</pre>
|
993
|
+
</td>
|
994
|
+
<td>
|
995
|
+
<pre class="code"><span class="info file"># File 'lib/tasker/cache_strategy.rb', line 104</span>
|
996
|
+
|
997
|
+
<span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_clear_detectors!'>clear_detectors!</span>
|
998
|
+
<span class='const'><span class='object_link'><a href="DetectorRegistry.html" title="Tasker::DetectorRegistry (class)">DetectorRegistry</a></span></span><span class='period'>.</span><span class='id identifier rubyid_instance'>instance</span><span class='period'>.</span><span class='id identifier rubyid_clear_detectors!'>clear_detectors!</span>
|
999
|
+
<span class='kw'>end</span></pre>
|
1000
|
+
</td>
|
1001
|
+
</tr>
|
1002
|
+
</table>
|
1003
|
+
</div>
|
1004
|
+
|
1005
|
+
<div class="method_details ">
|
1006
|
+
<h3 class="signature " id="detect-class_method">
|
1007
|
+
|
1008
|
+
.<strong>detect</strong> ⇒ <tt><span class='object_link'><a href="" title="Tasker::CacheStrategy (class)">Tasker::CacheStrategy</a></span></tt>
|
1009
|
+
|
1010
|
+
|
1011
|
+
|
1012
|
+
|
1013
|
+
|
1014
|
+
</h3><div class="docstring">
|
1015
|
+
<div class="discussion">
|
1016
|
+
|
1017
|
+
<p>Detect cache strategy for the current Rails.cache store</p>
|
1018
|
+
|
1019
|
+
|
1020
|
+
</div>
|
1021
|
+
</div>
|
1022
|
+
<div class="tags">
|
1023
|
+
|
1024
|
+
<p class="tag_title">Returns:</p>
|
1025
|
+
<ul class="return">
|
1026
|
+
|
1027
|
+
<li>
|
1028
|
+
|
1029
|
+
|
1030
|
+
<span class='type'>(<tt><span class='object_link'><a href="" title="Tasker::CacheStrategy (class)">Tasker::CacheStrategy</a></span></tt>)</span>
|
1031
|
+
|
1032
|
+
|
1033
|
+
|
1034
|
+
—
|
1035
|
+
<div class='inline'>
|
1036
|
+
<p>Strategy instance for Rails.cache</p>
|
1037
|
+
</div>
|
1038
|
+
|
1039
|
+
</li>
|
1040
|
+
|
1041
|
+
</ul>
|
1042
|
+
|
1043
|
+
</div><table class="source_code">
|
1044
|
+
<tr>
|
1045
|
+
<td>
|
1046
|
+
<pre class="lines">
|
1047
|
+
|
1048
|
+
|
1049
|
+
91
|
1050
|
+
92
|
1051
|
+
93</pre>
|
1052
|
+
</td>
|
1053
|
+
<td>
|
1054
|
+
<pre class="code"><span class="info file"># File 'lib/tasker/cache_strategy.rb', line 91</span>
|
1055
|
+
|
1056
|
+
<span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_detect'>detect</span>
|
1057
|
+
<span class='id identifier rubyid_new'>new</span>
|
1058
|
+
<span class='kw'>end</span></pre>
|
1059
|
+
</td>
|
1060
|
+
</tr>
|
1061
|
+
</table>
|
1062
|
+
</div>
|
1063
|
+
|
1064
|
+
<div class="method_details ">
|
1065
|
+
<h3 class="signature " id="register_detector-class_method">
|
1066
|
+
|
1067
|
+
.<strong>register_detector</strong>(pattern, detector) ⇒ <tt>Object</tt>
|
1068
|
+
|
1069
|
+
|
1070
|
+
|
1071
|
+
|
1072
|
+
|
1073
|
+
</h3><div class="docstring">
|
1074
|
+
<div class="discussion">
|
1075
|
+
|
1076
|
+
<p>Register a custom cache store detector</p>
|
1077
|
+
|
1078
|
+
|
1079
|
+
</div>
|
1080
|
+
</div>
|
1081
|
+
<div class="tags">
|
1082
|
+
<p class="tag_title">Parameters:</p>
|
1083
|
+
<ul class="param">
|
1084
|
+
|
1085
|
+
<li>
|
1086
|
+
|
1087
|
+
<span class='name'>pattern</span>
|
1088
|
+
|
1089
|
+
|
1090
|
+
<span class='type'>(<tt>Regexp</tt>, <tt>String</tt>)</span>
|
1091
|
+
|
1092
|
+
|
1093
|
+
|
1094
|
+
—
|
1095
|
+
<div class='inline'>
|
1096
|
+
<p>Pattern to match store class names</p>
|
1097
|
+
</div>
|
1098
|
+
|
1099
|
+
</li>
|
1100
|
+
|
1101
|
+
<li>
|
1102
|
+
|
1103
|
+
<span class='name'>detector</span>
|
1104
|
+
|
1105
|
+
|
1106
|
+
<span class='type'>(<tt>Proc</tt>)</span>
|
1107
|
+
|
1108
|
+
|
1109
|
+
|
1110
|
+
—
|
1111
|
+
<div class='inline'>
|
1112
|
+
<p>Detector that returns capabilities hash</p>
|
1113
|
+
</div>
|
1114
|
+
|
1115
|
+
</li>
|
1116
|
+
|
1117
|
+
</ul>
|
1118
|
+
|
1119
|
+
|
1120
|
+
</div><table class="source_code">
|
1121
|
+
<tr>
|
1122
|
+
<td>
|
1123
|
+
<pre class="lines">
|
1124
|
+
|
1125
|
+
|
1126
|
+
99
|
1127
|
+
100
|
1128
|
+
101</pre>
|
1129
|
+
</td>
|
1130
|
+
<td>
|
1131
|
+
<pre class="code"><span class="info file"># File 'lib/tasker/cache_strategy.rb', line 99</span>
|
1132
|
+
|
1133
|
+
<span class='kw'>def</span> <span class='kw'>self</span><span class='period'>.</span><span class='id identifier rubyid_register_detector'>register_detector</span><span class='lparen'>(</span><span class='id identifier rubyid_pattern'>pattern</span><span class='comma'>,</span> <span class='id identifier rubyid_detector'>detector</span><span class='rparen'>)</span>
|
1134
|
+
<span class='const'><span class='object_link'><a href="DetectorRegistry.html" title="Tasker::DetectorRegistry (class)">DetectorRegistry</a></span></span><span class='period'>.</span><span class='id identifier rubyid_instance'>instance</span><span class='period'>.</span><span class='id identifier rubyid_register_detector'>register_detector</span><span class='lparen'>(</span><span class='id identifier rubyid_pattern'>pattern</span><span class='comma'>,</span> <span class='id identifier rubyid_detector'>detector</span><span class='rparen'>)</span>
|
1135
|
+
<span class='kw'>end</span></pre>
|
1136
|
+
</td>
|
1137
|
+
</tr>
|
1138
|
+
</table>
|
1139
|
+
</div>
|
1140
|
+
|
1141
|
+
</div>
|
1142
|
+
|
1143
|
+
<div id="instance_method_details" class="method_details_list">
|
1144
|
+
<h2>Instance Method Details</h2>
|
1145
|
+
|
1146
|
+
|
1147
|
+
<div class="method_details first">
|
1148
|
+
<h3 class="signature first" id="export_capabilities-instance_method">
|
1149
|
+
|
1150
|
+
#<strong>export_capabilities</strong> ⇒ <tt>Hash</tt>
|
1151
|
+
|
1152
|
+
|
1153
|
+
|
1154
|
+
|
1155
|
+
|
1156
|
+
</h3><div class="docstring">
|
1157
|
+
<div class="discussion">
|
1158
|
+
|
1159
|
+
<p>Export capabilities for backward compatibility</p>
|
1160
|
+
|
1161
|
+
|
1162
|
+
</div>
|
1163
|
+
</div>
|
1164
|
+
<div class="tags">
|
1165
|
+
|
1166
|
+
<p class="tag_title">Returns:</p>
|
1167
|
+
<ul class="return">
|
1168
|
+
|
1169
|
+
<li>
|
1170
|
+
|
1171
|
+
|
1172
|
+
<span class='type'>(<tt>Hash</tt>)</span>
|
1173
|
+
|
1174
|
+
|
1175
|
+
|
1176
|
+
—
|
1177
|
+
<div class='inline'>
|
1178
|
+
<p>Hash of capabilities for legacy integrations</p>
|
1179
|
+
</div>
|
1180
|
+
|
1181
|
+
</li>
|
1182
|
+
|
1183
|
+
</ul>
|
1184
|
+
|
1185
|
+
</div><table class="source_code">
|
1186
|
+
<tr>
|
1187
|
+
<td>
|
1188
|
+
<pre class="lines">
|
1189
|
+
|
1190
|
+
|
1191
|
+
176
|
1192
|
+
177
|
1193
|
+
178</pre>
|
1194
|
+
</td>
|
1195
|
+
<td>
|
1196
|
+
<pre class="code"><span class="info file"># File 'lib/tasker/cache_strategy.rb', line 176</span>
|
1197
|
+
|
1198
|
+
<span class='kw'>def</span> <span class='id identifier rubyid_export_capabilities'>export_capabilities</span>
|
1199
|
+
<span class='ivar'>@capabilities</span><span class='period'>.</span><span class='id identifier rubyid_dup'>dup</span>
|
1200
|
+
<span class='kw'>end</span></pre>
|
1201
|
+
</td>
|
1202
|
+
</tr>
|
1203
|
+
</table>
|
1204
|
+
</div>
|
1205
|
+
|
1206
|
+
<div class="method_details ">
|
1207
|
+
<h3 class="signature " id="supports?-instance_method">
|
1208
|
+
|
1209
|
+
#<strong>supports?</strong>(capability) ⇒ <tt>Boolean</tt>
|
1210
|
+
|
1211
|
+
|
1212
|
+
|
1213
|
+
|
1214
|
+
|
1215
|
+
</h3><div class="docstring">
|
1216
|
+
<div class="discussion">
|
1217
|
+
|
1218
|
+
<p>Check if store supports a specific capability</p>
|
1219
|
+
|
1220
|
+
|
1221
|
+
</div>
|
1222
|
+
</div>
|
1223
|
+
<div class="tags">
|
1224
|
+
<p class="tag_title">Parameters:</p>
|
1225
|
+
<ul class="param">
|
1226
|
+
|
1227
|
+
<li>
|
1228
|
+
|
1229
|
+
<span class='name'>capability</span>
|
1230
|
+
|
1231
|
+
|
1232
|
+
<span class='type'>(<tt>Symbol</tt>)</span>
|
1233
|
+
|
1234
|
+
|
1235
|
+
|
1236
|
+
—
|
1237
|
+
<div class='inline'>
|
1238
|
+
<p>Capability to check (:distributed, :atomic_increment, etc.)</p>
|
1239
|
+
</div>
|
1240
|
+
|
1241
|
+
</li>
|
1242
|
+
|
1243
|
+
</ul>
|
1244
|
+
|
1245
|
+
<p class="tag_title">Returns:</p>
|
1246
|
+
<ul class="return">
|
1247
|
+
|
1248
|
+
<li>
|
1249
|
+
|
1250
|
+
|
1251
|
+
<span class='type'>(<tt>Boolean</tt>)</span>
|
1252
|
+
|
1253
|
+
|
1254
|
+
|
1255
|
+
—
|
1256
|
+
<div class='inline'>
|
1257
|
+
<p>True if capability is supported</p>
|
1258
|
+
</div>
|
1259
|
+
|
1260
|
+
</li>
|
1261
|
+
|
1262
|
+
</ul>
|
1263
|
+
|
1264
|
+
</div><table class="source_code">
|
1265
|
+
<tr>
|
1266
|
+
<td>
|
1267
|
+
<pre class="lines">
|
1268
|
+
|
1269
|
+
|
1270
|
+
169
|
1271
|
+
170
|
1272
|
+
171</pre>
|
1273
|
+
</td>
|
1274
|
+
<td>
|
1275
|
+
<pre class="code"><span class="info file"># File 'lib/tasker/cache_strategy.rb', line 169</span>
|
1276
|
+
|
1277
|
+
<span class='kw'>def</span> <span class='id identifier rubyid_supports?'>supports?</span><span class='lparen'>(</span><span class='id identifier rubyid_capability'>capability</span><span class='rparen'>)</span>
|
1278
|
+
<span class='ivar'>@capabilities</span><span class='lbracket'>[</span><span class='id identifier rubyid_capability'>capability</span><span class='rbracket'>]</span> <span class='op'>||</span> <span class='kw'>false</span>
|
1279
|
+
<span class='kw'>end</span></pre>
|
1280
|
+
</td>
|
1281
|
+
</tr>
|
1282
|
+
</table>
|
1283
|
+
</div>
|
1284
|
+
|
1285
|
+
</div>
|
1286
|
+
|
1287
|
+
</div>
|
1288
|
+
|
1289
|
+
<div id="footer">
|
1290
|
+
Generated on Tue Jul 1 16:47:36 2025 by
|
1291
|
+
<a href="https://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
|
1292
|
+
0.9.37 (ruby-3.2.4).
|
1293
|
+
</div>
|
1294
|
+
|
1295
|
+
</div>
|
1296
|
+
</body>
|
1297
|
+
</html>
|