Class: MermaidRailsErd::Generator
- Inherits:
-
Object
- Object
- MermaidRailsErd::Generator
- Defined in:
- lib/mermaid_rails_erd/generator.rb
Instance Method Summary collapse
-
#build ⇒ self
Build and collect data from models.
-
#emit(output: nil) ⇒ void
Generate and emit the ERD diagram.
-
#initialize(output: nil) ⇒ Generator
constructor
A new instance of Generator.
-
#parsed_data ⇒ ParsedData
Get parsed data as a structured object.
Constructor Details
#initialize(output: nil) ⇒ Generator
Returns a new instance of Generator.
16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
# File 'lib/mermaid_rails_erd/generator.rb', line 16 def initialize(output: nil) @output = output @printed_tables = Set.new @printed_relationships = Set.new @relationships = [] @model_loader = ModelLoader.new @association_resolver = AssociationResolver.new @symbol_mapper = RelationshipSymbolMapper.new @model_data_collector = ModelDataCollector.new(@model_loader) @polymorphic_resolver = PolymorphicTargetsResolver.new(@model_data_collector) @relationship_registry = RelationshipRegistry.new( symbol_mapper: @symbol_mapper, association_resolver: @association_resolver, polymorphic_resolver: @polymorphic_resolver, printed_tables: @printed_tables, model_data_collector: @model_data_collector, ) end |
Instance Method Details
#build ⇒ self
Build and collect data from models
38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
# File 'lib/mermaid_rails_erd/generator.rb', line 38 def build @model_data_collector.collect # Build all relationships with polymorphic handling first begin @relationships = @relationship_registry.build_all_relationships rescue StandardError => e puts "ERROR building relationships: #{e.class} - #{e.}" puts e.backtrace.join("\n") @relationships = [] end # Update table definitions with FK annotations @tables = @model_data_collector.update_foreign_keys(@relationships) self end |
#emit(output: nil) ⇒ void
This method returns an undefined value.
Generate and emit the ERD diagram
65 66 67 68 69 |
# File 'lib/mermaid_rails_erd/generator.rb', line 65 def emit(output: nil) output ||= @output output ||= $stdout MermaidEmitter.new(output, @tables, @relationships).emit end |
#parsed_data ⇒ ParsedData
Get parsed data as a structured object
58 59 60 |
# File 'lib/mermaid_rails_erd/generator.rb', line 58 def parsed_data ParsedData.new(@relationships, @tables, @model_data_collector) end |