class RuboCop::Cop::Rails::MailerName
This cop enforces that mailer names end with `Mailer` suffix.
Without the `Mailer` suffix it isn't immediately apparent what's a mailer and which views are related to the mailer.
@example
# bad class User < ActionMailer::Base end class User < ApplicationMailer end # good class UserMailer < ActionMailer::Base end class UserMailer < ApplicationMailer end
Constants
- MSG
Public Instance Methods
on_class(node)
click to toggle source
# File lib/rubocop/cop/rails/mailer_name.rb, line 46 def on_class(node) class_definition?(node) do |name_node| add_offense(name_node) do |corrector| autocorrect(corrector, name_node) end end end
on_send(node)
click to toggle source
# File lib/rubocop/cop/rails/mailer_name.rb, line 54 def on_send(node) return unless class_new_definition?(node) casgn_parent = node.each_ancestor(:casgn).first return unless casgn_parent name = casgn_parent.children[1] return if mailer_suffix?(name) add_offense(casgn_parent.loc.name) do |corrector| autocorrect(corrector, casgn_parent) end end
Private Instance Methods
autocorrect(corrector, node)
click to toggle source
# File lib/rubocop/cop/rails/mailer_name.rb, line 70 def autocorrect(corrector, node) if node.casgn_type? name = node.children[1] corrector.replace(node.loc.name, "#{name}Mailer") else name = node.children.last corrector.replace(node.source_range, "#{name}Mailer") end end
mailer_suffix?(mailer_name)
click to toggle source
# File lib/rubocop/cop/rails/mailer_name.rb, line 80 def mailer_suffix?(mailer_name) mailer_name.to_s.end_with?('Mailer') end