Class: RailsVisualizer::ControllersInspector

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

Constant Summary collapse

FRAMEWORK_NAMESPACES =
%w[
  ActionController::
  ActionDispatch::
  ActiveStorage::
  ActionMailbox::
  ActionText::
  Rails::
  Turbo::
  Devise::
].freeze
ACTION_FILTER_CLASS =
'AbstractController::Callbacks::ActionFilter'
ROUTABLE_ACTION_PATTERN =
/\A[a-z_][a-zA-Z0-9_]*!?\z/

Instance Method Summary collapse

Constructor Details

#initialize(excluded: []) ⇒ ControllersInspector

Returns a new instance of ControllersInspector.



21
22
23
24
25
# File 'lib/rails_visualizer/controllers_inspector.rb', line 21

def initialize(excluded: [])
  @excluded_set          = excluded.to_set
  @callbacks_by_class    = {}
  @callback_origin_cache = {}
end

Instance Method Details

#callObject



27
28
29
30
31
32
33
34
35
36
37
38
39
40
# File 'lib/rails_visualizer/controllers_inspector.rb', line 27

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

  base = ActionController::Base.descendants
  api  = defined?(ActionController::API) ? ActionController::API.descendants : []

  (base + api)
    .uniq
    .reject { |c| c.name.nil? || framework_class?(c.name) || @excluded_set.include?(c.name) }
    .map { |c| serialize_controller(c) }
    .sort_by { |c| c[:name] }
rescue StandardError
  []
end