class Tapioca::Compilers::Dsl::ActionMailer
`Tapioca::Compilers::Dsl::ActionMailer` generates RBI
files for subclasses of [`ActionMailer::Base`](api.rubyonrails.org/classes/ActionMailer/Base.html).
For example, with the following `ActionMailer` subclass:
~~~rb class NotifierMailer < ActionMailer::Base
def notify_customer(customer_id) # ... end
end ~~~
this generator will produce the RBI
file `notifier_mailer.rbi` with the following content:
~~~rbi # notifier_mailer.rbi # typed: true class NotifierMailer
sig { params(customer_id: T.untyped).returns(::ActionMailer::MessageDelivery) } def self.notify_customer(customer_id); end
end ~~~
Public Instance Methods
decorate(root, constant)
click to toggle source
# File lib/tapioca/compilers/dsl/action_mailer.rb, line 40 def decorate(root, constant) root.create_path(constant) do |mailer| constant.action_methods.to_a.each do |mailer_method| method_def = constant.instance_method(mailer_method) parameters = compile_method_parameters_to_rbi(method_def) mailer.create_method( mailer_method, parameters: parameters, return_type: "::ActionMailer::MessageDelivery", class_method: true ) end end end
gather_constants()
click to toggle source
# File lib/tapioca/compilers/dsl/action_mailer.rb, line 56 def gather_constants descendants_of(::ActionMailer::Base).reject(&:abstract?) end