Class: Tapioca::Dsl::Compilers::SidekiqSorbet

Inherits:
Compiler
  • Object
show all
Extended by:
T::Generic, T::Sig
Defined in:
lib/tapioca/dsl/compilers/sidekiq_sorbet.rb

Overview

Generates RBI files for Sidekiq::Sorbet workers

This compiler generates:

  • Instance methods for direct argument access (value, attachment_id, etc.)

  • Class methods run_async and run_sync with proper keyword argument signatures

Examples:

Worker with Args

class MyWorker
  include Sidekiq::Sorbet

  class Args < T::Struct
    const :user_id, Integer
    const :notify, T::Boolean, default: false
  end

  def run
    user_id  # Direct access
    notify
  end
end

# Generates:
# sig { returns(Integer) }
# def user_id; end
#
# sig { returns(T::Boolean) }
# def notify; end
#
# sig { params(user_id: Integer, notify: T::Boolean).returns(String) }
# def self.run_async(user_id:, notify: false); end
#
# sig { params(user_id: Integer, notify: T::Boolean).returns(T.untyped) }
# def self.run_sync(user_id:, notify: false); end

Constant Summary collapse

ConstantType =
type_member { { fixed: T.class_of(::Sidekiq::Sorbet) } }

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.gather_constantsObject



60
61
62
63
64
# File 'lib/tapioca/dsl/compilers/sidekiq_sorbet.rb', line 60

def self.gather_constants
  all_classes.select do |c|
    c.is_a?(Class) && c.included_modules.include?(::Sidekiq::Sorbet)
  end
end

Instance Method Details

#decorateObject



49
50
51
52
53
54
55
56
57
# File 'lib/tapioca/dsl/compilers/sidekiq_sorbet.rb', line 49

def decorate
  root.create_path(constant) do |klass|
    generate_argument_accessors(klass) if args_class
    generate_run_async_method(klass)
    generate_run_at_method(klass)
    generate_run_in_method(klass)
    generate_run_sync_method(klass)
  end
end