Module: RubyLLM::ActiveRecord::ActsAs

Extended by:
ActiveSupport::Concern
Defined in:
lib/ruby_llm/active_record/acts_as.rb

Overview

Adds chat and message persistence capabilities to ActiveRecord models.

Class Method Summary collapse

Class Method Details

.included(base) ⇒ Object

When ActsAs is included, ensure models are loaded from database



10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/ruby_llm/active_record/acts_as.rb', line 10

def self.included(base)
  super
  # Monkey-patch Models to use database when ActsAs is active
  RubyLLM::Models.class_eval do
    def self.load_models
      read_from_database
    rescue StandardError => e
      RubyLLM.logger.debug "Failed to load models from database: #{e.message}, falling back to JSON"
      read_from_json
    end

    def self.read_from_database
      model_class = RubyLLM.config.model_registry_class
      model_class = model_class.constantize if model_class.is_a?(String)
      model_class.all.map(&:to_llm)
    end

    def load_from_database!
      @models = self.class.read_from_database
    end
  end
end