Class: AIRspecWriter::SchemaExtractor
- Inherits:
-
Object
- Object
- AIRspecWriter::SchemaExtractor
- Defined in:
- lib/ai_rspec_writer/schema_extractor.rb
Constant Summary collapse
- SCHEMA_FILE =
"db/schema.rb"
Class Method Summary collapse
Class Method Details
.extract_schema(table_names, spinner) ⇒ Object
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/ai_rspec_writer/schema_extractor.rb', line 22 def self.extract_schema(table_names, spinner) unless File.exist?(SCHEMA_FILE) spinner.error("\n❌ Error: `db/schema.rb` not found. Run `rails db:migrate` first.") return nil end schema_content = File.read(SCHEMA_FILE) match = "" # ✅ Fix: Initialize match variable to avoid nil error matched_tables = [] table_names.map do |table_name| matched_data = schema_content.match(/create_table "#{table_name}".*?^\s*end$/m) if matched_data.present? match += "#{matched_data[0]}\n\n" matched_tables << table_name end end.join("\n\n") # Combine multiple files if match # Stop the spinner when AI response is ready spinner.success("#{matched_tables} ✅ Done!") return match else spinner.error("(No schema found for table: #{table_names})") return nil end end |
.extract_schema_from_file(table_names) ⇒ Object
11 12 13 14 15 16 17 18 19 20 |
# File 'lib/ai_rspec_writer/schema_extractor.rb', line 11 def self.extract_schema_from_file(table_names) return nil unless table_names # Define loading spinner spinner = TTY::Spinner.new("[:spinner] Fetching Schema From Schema.rb : ".yellow, format: :dots) # Start the spinner spinner.auto_spin extract_schema(table_names, spinner) end |