Class: Tapioca::Compilers::Dsl::ActiveJob
- Extended by:
- T::Sig
- Defined in:
- lib/tapioca/compilers/dsl/active_job.rb
Overview
Tapioca::Compilers::Dsl::ActiveJob generates RBI files for subclasses of [ActiveJob::Base](api.rubyonrails.org/classes/ActiveJob/Base.html).
For example, with the following ActiveJob subclass:
~~~rb class NotifyUserJob < ActiveJob::Base
sig { params(user: User).returns(Mail) }
def perform(user)
# ...
end
end ~~~
this generator will produce the RBI file notify_user_job.rbi with the following content:
~~~rbi # notify_user_job.rbi # typed: true class NotifyUserJob
sig { params(user: User).returns(T.any(NotifyUserJob, FalseClass)) }
def self.perform_later(user); end
sig { params(user: User).returns(Mail) }
def self.perform_now(user); end
end ~~~
Instance Attribute Summary
Attributes inherited from Base
Instance Method Summary collapse
Methods inherited from Base
Constructor Details
This class inherits a constructor from Tapioca::Compilers::Dsl::Base
Instance Method Details
#decorate(root, constant) ⇒ Object
46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 |
# File 'lib/tapioca/compilers/dsl/active_job.rb', line 46 def decorate(root, constant) root.path(constant) do |job| next unless constant.instance_methods(false).include?(:perform) method = constant.instance_method(:perform) parameters = compile_method_parameters_to_parlour(method) return_type = compile_method_return_type_to_parlour(method) create_method( job, "perform_later", parameters: parameters, return_type: "T.any(#{constant.name}, FalseClass)", class_method: true ) create_method( job, "perform_now", parameters: parameters, return_type: return_type, class_method: true ) end end |
#gather_constants ⇒ Object
73 74 75 |
# File 'lib/tapioca/compilers/dsl/active_job.rb', line 73 def gather_constants ::ActiveJob::Base.descendants end |