Class: RailsVisualizer::MailersInspector

Inherits:
Object
  • Object
show all
Includes:
PathHelper
Defined in:
lib/rails_visualizer/mailers_inspector.rb

Constant Summary collapse

FRAMEWORK_NAMESPACES =
%w[
  ActionMailer::
  Devise::
].freeze

Instance Method Summary collapse

Constructor Details

#initialize(excluded: []) ⇒ MailersInspector

Returns a new instance of MailersInspector.



12
13
14
# File 'lib/rails_visualizer/mailers_inspector.rb', line 12

def initialize(excluded: [])
  @excluded_set = excluded.to_set
end

Instance Method Details

#callObject



16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# File 'lib/rails_visualizer/mailers_inspector.rb', line 16

def call
  return [] unless defined?(ActionMailer::Base)

  mailers = ActionMailer::Base
            .descendants
            .reject { |m| m.name.nil? || framework_class?(m.name) || @excluded_set.include?(m.name) }

  superclass_names = mailers.to_set { |m| m.superclass.name }

  mailers
    .map { |m| serialize_mailer(m, superclass_names) }
    .sort_by { |m| m[:name] }
rescue StandardError
  []
end