Module: Workers::StatusBroadcastable

Extended by:
ActiveSupport::Concern
Includes:
Sidekiq::Status::Worker, Overrides, PerformWrapper
Included in:
ActivityPrioritizationWorker, AmalyticsImportWorker, AmazonBuyBoxRecoveryWorker, AmazonCatalogItemListingsDataWorker, AmazonItemOperationWorker, AmazonPricingAutomationWorker, AmazonRefreshProductTypeSchemasWorker, ArticleLinkCheckerWorker, AutoBlogSchemaExtractionWorker, BannerImageBatchWorker, BlogSchemaExtractionWorker, BudgetGeneratorWorker, BudgetRefresherIncrementalWorker, BudgetRefresherWorkerWithStatus, CartonLabelWorker, CloudflareUpdatesWorker, CloudflareVideoMonitorWorker, CreateReceiptsWorker, CustomerMergeWorker, DataImportPrepWorker, EditReceiptsWorker, EmbeddingBatchQueueWorker, EnterOrderRoomsWorker, EnterQuoteRoomsWorker, GenerateExportedCatalogPacketWorker, GenerateMultipleRoomPlansWorker, GeneratePickSlipWorker, GenerateQuoteWorker, GetFreightquoteLoadNumber, ImageDuplicateFinderWorker, ImageFingerprintWorker, ImageFullAnalysisWorker, ImageGenerationWorker, ImageMetadataSuggestionsWorker, ImageProfileBulkSyncWorker, ImageUpscaleWorker, ImageVisionWorker, MailingCompletionWorker, MenardInventoryUploadWorker, OpportunityCopyWorker, PickItemsSaveWorker, PrintAllChecksWorker, PublicationVisionWorker, QuoteCopyWorker, RefreshInventoryPlanWorker, RefreshInventoryReportWorker, RefreshKpiCallDataWorker, RequoteWorker, RoomQuickRevisionWorker, SeoPageAnalysisWorker, ServiceRunner, ShipmentReceiptsWorker, SmartVideoPosterExtractionWorker, VideoPosterExtractionWorker, VideoTranscriptionWorker
Defined in:
app/concerns/workers/status_broadcastable.rb

Overview

Concern for Sidekiq workers that broadcast real-time status updates via Turbo Streams.

This includes Sidekiq::Status::Worker and extends it to also broadcast updates
whenever at(), total(), or store() are called. Subscribers listening to the job's
stream channel will receive instant updates instead of polling.

Usage:
class MyWorker
include Sidekiq::Job
include Workers::StatusBroadcastable # Includes Sidekiq::Status::Worker

def perform(options = {})
  total 5
  at(1, 'Starting...')
  # ... work ...
  at(2, 'Processing...')
  # ... more work ...
  store redirect_to: '/some/path'
end

end

On the view side, subscribe to updates:
<%= turbo_stream_from "job_status:#@job@job.jid" %>

Defined Under Namespace

Modules: Overrides, PerformWrapper

Instance Attribute Summary collapse

Method Summary

Methods included from PerformWrapper

#perform

Methods included from Overrides

#at, #store, #total

Instance Attribute Details

#broadcast_status_updatesObject

Track whether broadcasting is enabled for this job



67
68
69
# File 'app/concerns/workers/status_broadcastable.rb', line 67

def broadcast_status_updates
  @broadcast_status_updates
end