Class: RailsConsolePro::Commands::IntrospectCommand

Inherits:
BaseCommand
  • Object
show all
Defined in:
lib/rails_console_pro/commands/introspect_command.rb

Overview

Command for model introspection

Instance Method Summary collapse

Methods included from RailsConsolePro::ColorHelper

#bold_color, #color, #method_missing, #pastel, #respond_to_missing?

Dynamic Method Handling

This class handles dynamic methods through the method_missing method in the class RailsConsolePro::ColorHelper

Instance Method Details

#execute(model_class, *options) ⇒ Object



7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
# File 'lib/rails_console_pro/commands/introspect_command.rb', line 7

def execute(model_class, *options)
  error_message = ModelValidator.validate_for_schema(model_class)
  if error_message
    puts pastel.red("Error: #{error_message}")
    return nil
  end

  # Parse options
  opts = parse_options(options)

  # Collect introspection data
  collector = Services::IntrospectionCollector.new(model_class)
  data = collector.collect

  # If specific option requested, handle it
  if opts[:callbacks_only]
    return handle_callbacks_only(model_class, data[:callbacks])
  elsif opts[:enums_only]
    return handle_enums_only(model_class, data[:enums])
  elsif opts[:concerns_only]
    return handle_concerns_only(model_class, data[:concerns])
  elsif opts[:scopes_only]
    return handle_scopes_only(model_class, data[:scopes])
  elsif opts[:validations_only]
    return handle_validations_only(model_class, data[:validations])
  elsif opts[:method_source]
    return handle_method_source(model_class, opts[:method_source])
  end

  # Return full result
  IntrospectResult.new(
    model: model_class,
    callbacks: data[:callbacks],
    enums: data[:enums],
    concerns: data[:concerns],
    scopes: data[:scopes],
    validations: data[:validations],
    lifecycle_hooks: data[:lifecycle_hooks]
  )
rescue => e
  RailsConsolePro::ErrorHandler.handle(e, context: :introspect)
end