class SorbetRails::MailerRbiFormatter
Constants
- Parameter
Attributes
mailer_class[R]
rbi_generator[R]
Public Class Methods
new(mailer_class)
click to toggle source
# File lib/sorbet-rails/mailer_rbi_formatter.rb, line 18 def initialize(mailer_class) @mailer_class = T.let(mailer_class, T.class_of(ActionMailer::Base)) @rbi_generator = T.let(Parlour::RbiGenerator.new, Parlour::RbiGenerator) end
Public Instance Methods
generate_rbi()
click to toggle source
# File lib/sorbet-rails/mailer_rbi_formatter.rb, line 45 def generate_rbi puts "-- Generate sigs for mailer #{@mailer_class.name} --" populate_rbi @rbi_generator.rbi end
populate_rbi()
click to toggle source
# File lib/sorbet-rails/mailer_rbi_formatter.rb, line 24 def populate_rbi @rbi_generator.root.add_comment([ "This is an autogenerated file for Rails' mailers.", 'Please rerun bundle exec rake rails_rbi:mailers to regenerate.' ]) @rbi_generator.root.create_class(T.must(@mailer_class.name)) do |mailer_rbi| @mailer_class.action_methods.to_a.sort.each do |mailer_method| method_def = @mailer_class.instance_method(mailer_method) parameters = SorbetRails::SorbetUtils.parameters_from_method_def(method_def) mailer_rbi.create_method( mailer_method.to_s, parameters: parameters, return_type: 'ActionMailer::MessageDelivery', class_method: true, ) end end end