Class: Rails::Schema::Extractor::ModelScanner

Inherits:
Object
  • Object
show all
Defined in:
lib/rails/schema/extractor/model_scanner.rb

Instance Method Summary collapse

Constructor Details

#initialize(configuration: ::Rails::Schema.configuration, schema_data: nil) ⇒ ModelScanner

Returns a new instance of ModelScanner.



7
8
9
10
# File 'lib/rails/schema/extractor/model_scanner.rb', line 7

def initialize(configuration: ::Rails::Schema.configuration, schema_data: nil)
  @configuration = configuration
  @schema_data = schema_data.nil? || schema_data.empty? ? nil : schema_data
end

Instance Method Details

#scanObject



12
13
14
15
16
17
18
19
20
21
22
23
# File 'lib/rails/schema/extractor/model_scanner.rb', line 12

def scan
  eager_load_models!

  all_descendants = ActiveRecord::Base.descendants
  non_abstract = all_descendants.reject(&:abstract_class?)
  named = non_abstract.reject { |m| m.name.nil? }
  with_tables = named.select { |m| table_known?(m) }
  included = with_tables.reject { |m| excluded?(m) }
  log_empty_scan(all_descendants, non_abstract, named, with_tables) if included.empty?

  included.sort_by(&:name)
end