Class: AIRspecWriter::AIProviders::GeminiGenerator
- Inherits:
-
Object
- Object
- AIRspecWriter::AIProviders::GeminiGenerator
- Defined in:
- lib/ai_rspec_writer/ai_providers/gemini_generator.rb
Overview
Generates RSpec tests using Google’s Gemini AI API
Defined Under Namespace
Classes: ApiError, ConfigurationError
Constant Summary collapse
- BASE_URL =
'https://generativelanguage.googleapis.com/v1beta/models'
Instance Method Summary collapse
- #generate_spec(file_content) ⇒ Object
-
#initialize(ec: nil, schema: nil) ⇒ GeminiGenerator
constructor
A new instance of GeminiGenerator.
Constructor Details
#initialize(ec: nil, schema: nil) ⇒ GeminiGenerator
Returns a new instance of GeminiGenerator.
15 16 17 18 19 20 21 22 |
# File 'lib/ai_rspec_writer/ai_providers/gemini_generator.rb', line 15 def initialize(ec: nil, schema: nil) @extra_comment = ec @schema = schema @api_key = AiRspecWriter.configuration.gemini_api_key @model = AiRspecWriter.configuration.gemini_model validate_configuration end |
Instance Method Details
#generate_spec(file_content) ⇒ Object
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 49 50 |
# File 'lib/ai_rspec_writer/ai_providers/gemini_generator.rb', line 24 def generate_spec(file_content) fixed_prompt = "Write RSpec tests for this Ruby code with all factory files and rubocop standards:" my_schema = "Check my table definition details: #{@schema}" if @schema # Define loading spinner spinner = TTY::Spinner.new("[:spinner] Generating AI-powered RSpec tests".yellow, format: :dots) # Start the spinner spinner.auto_spin begin content_text = build_content_text(fixed_prompt, file_content, my_schema) response_text = call_gemini_api(content_text) if response_text&.strip&.length&.positive? # Stop the spinner when AI response is ready spinner.success("✅ Done!") return response_text else spinner.error('(Gemini AI returned an empty response.)') return nil end rescue StandardError => e spinner.error("(❌ An error occurred while calling Gemini AI: #{e.})") exit 1 end end |