Module: Wurk::Worker

Defined in:
lib/wurk/worker.rb,
lib/wurk/worker/setter.rb

Overview

The user-facing job DSL. ‘include Wurk::Worker` — or its modern alias `Sidekiq::Job` / `Sidekiq::Worker` — onto a class to make it a background job. The class gains `sidekiq_options`, the `perform_*` enqueue methods, `set`, and the retry-hook DSL; each instance gains `jid`, `logger`, `interrupted?`, and the batch helpers.

Spec: docs/target/sidekiq-free.md §6 (Sidekiq::Job).

Examples:

A minimal job

class HardJob
  include Sidekiq::Job
  sidekiq_options queue: "critical", retry: 5

  def perform(user_id, opts = {})
    # ... your work ...
  end
end

HardJob.perform_async(42, "fast" => true)   # enqueue now
HardJob.perform_in(5.minutes, 42)           # enqueue later

See Also:

Defined Under Namespace

Modules: ClassMethods Classes: Setter

Constant Summary collapse

SCHEDULED_THRESHOLD =

Interval values below this threshold are interpreted as seconds-from-now; values at or above are treated as absolute epoch timestamps. Threshold matches Sidekiq exactly — wire-compat sacred.

1_000_000_000

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#bidObject

Batch helpers (Pro). Available on every worker — return nil when the current job did not originate from a batch.

Spec: docs/target/sidekiq-pro.md §2.6.



65
66
67
# File 'lib/wurk/worker.rb', line 65

def bid
  @bid
end

Class Method Details

.clear_allObject



47
# File 'lib/wurk/worker.rb', line 47

def self.clear_all  = ::Wurk::Queues.clear_all

.drain_allObject



48
# File 'lib/wurk/worker.rb', line 48

def self.drain_all  = ::Wurk::Testing.drain_all

.included(base) ⇒ Object



35
36
37
38
39
40
41
# File 'lib/wurk/worker.rb', line 35

def self.included(base)
  base.extend(ClassMethods)
  base.module_eval { attr_accessor :jid, :_context }
  base.singleton_class.module_eval do
    attr_accessor :sidekiq_retry_in_block, :sidekiq_retries_exhausted_block
  end
end

.jobsObject

Module-level test helpers: ‘Sidekiq::Worker.jobs / clear_all / drain_all` operate across every job class (spec §24.3). Resolved lazily so the testing constants need not be loaded when Worker is.



46
# File 'lib/wurk/worker.rb', line 46

def self.jobs       = ::Wurk::Queues.jobs

Instance Method Details

#batchObject



72
73
74
75
76
# File 'lib/wurk/worker.rb', line 72

def batch
  return nil if @bid.nil?

  Wurk::Batch.new(@bid)
end

#interrupted?Boolean

Cooperative cancellation flag for IterableJob and long-running jobs. Returns false when no processor context has been attached.

Returns:

  • (Boolean)


56
57
58
59
# File 'lib/wurk/worker.rb', line 56

def interrupted?
  ctx = @_context
  ctx.respond_to?(:stopping?) && ctx.stopping?
end

#loggerObject



50
51
52
# File 'lib/wurk/worker.rb', line 50

def logger
  Wurk.logger
end

#valid_within_batch?Boolean

False if the batch was invalidated. Workers should ‘return unless valid_within_batch?` to short-circuit work for cancelled batches.

Returns:

  • (Boolean)


80
81
82
83
84
# File 'lib/wurk/worker.rb', line 80

def valid_within_batch?
  return true if @bid.nil?

  batch.valid?
end