Module: Sidekiq::Sorbet::ClassMethods

Extended by:
T::Sig
Defined in:
lib/sidekiq/sorbet/class_methods.rb

Overview

Class methods added to workers that include Sidekiq::Sorbet

Instance Method Summary collapse

Instance Method Details

#args_classObject



76
77
78
79
80
81
82
83
84
85
86
87
# File 'lib/sidekiq/sorbet/class_methods.rb', line 76

def args_class
  return @args_class if defined?(@args_class)

  @args_class = T.let(
    begin
      klass = const_defined?(:Args, false) ? const_get(:Args) : nil
      validate_args_class!(klass) if klass
      klass
    end,
    T.nilable(T.class_of(T::Struct)),
  )
end

#run_async(**kwargs) ⇒ Object



19
20
21
22
23
# File 'lib/sidekiq/sorbet/class_methods.rb', line 19

def run_async(**kwargs)
  args_instance = build_args(**kwargs)
  serialized = serialize_args(args_instance)
  perform_async(serialized)
end

#run_at(time, **kwargs) ⇒ Object



33
34
35
36
37
# File 'lib/sidekiq/sorbet/class_methods.rb', line 33

def run_at(time, **kwargs)
  args_instance = build_args(**kwargs)
  serialized = serialize_args(args_instance)
  perform_at(time, serialized)
end

#run_in(interval, **kwargs) ⇒ Object



47
48
49
50
51
# File 'lib/sidekiq/sorbet/class_methods.rb', line 47

def run_in(interval, **kwargs)
  args_instance = build_args(**kwargs)
  serialized = serialize_args(args_instance)
  perform_in(interval, serialized)
end

#run_sync(**kwargs) ⇒ Object



59
60
61
62
63
64
65
66
67
68
69
70
# File 'lib/sidekiq/sorbet/class_methods.rb', line 59

def run_sync(**kwargs)
  args_instance = build_args(**kwargs)
  worker = new
  worker.instance_variable_set(:@args, args_instance)
  worker.define_arg_accessors if args_instance
  worker.run
rescue InvalidArgsError, ArgsNotDefinedError, SerializationError
  raise
rescue StandardError => e
  raise Error,
        "Error in #{name}#run: #{e.message}\n#{e.backtrace&.join("\n")}"
end