module RubyLLM::Generators::GeneratorHelpers
Shared helpers for RubyLLM generators
Public Instance Methods
Source
# File lib/generators/ruby_llm/generator_helpers.rb, line 52 def acts_as_chat_declaration params = [] add_association_params(params, :messages, message_table_name, message_model_name, owner_table: chat_table_name, owner_model_name: chat_model_name, plural: true) add_association_params(params, :model, model_table_name, model_model_name, owner_table: chat_table_name, owner_model_name: chat_model_name) "acts_as_chat#{" #{params.join(', ')}" if params.any?}" end
# File lib/generators/ruby_llm/generator_helpers.rb, line 63 def acts_as_message_declaration params = [] add_association_params(params, :chat, chat_table_name, chat_model_name, owner_table: message_table_name, owner_model_name: message_model_name) add_association_params(params, :tool_calls, tool_call_table_name, tool_call_model_name, owner_table: message_table_name, owner_model_name: message_model_name, plural: true) add_association_params(params, :model, model_table_name, model_model_name, owner_table: message_table_name, owner_model_name: message_model_name) "acts_as_message#{" #{params.join(', ')}" if params.any?}" end
Source
# File lib/generators/ruby_llm/generator_helpers.rb, line 76 def acts_as_model_declaration params = [] add_association_params(params, :chats, chat_table_name, chat_model_name, owner_table: model_table_name, owner_model_name: model_model_name, plural: true) "acts_as_model#{" #{params.join(', ')}" if params.any?}" end
# File lib/generators/ruby_llm/generator_helpers.rb, line 85 def acts_as_tool_call_declaration params = [] add_association_params(params, :message, message_table_name, message_model_name, owner_table: tool_call_table_name, owner_model_name: tool_call_model_name) add_result_foreign_key_param(params) "acts_as_tool_call#{" #{params.join(', ')}" if params.any?}" end
# File lib/generators/ruby_llm/generator_helpers.rb, line 125 def create_migration_class_name(table_name) "create_#{table_name}".camelize end
Source
# File lib/generators/ruby_llm/generator_helpers.rb, line 95 def create_namespace_modules namespaces = [] [chat_model_name, message_model_name, tool_call_model_name, model_model_name].each do |model_name| if model_name.include?('::') namespace = model_name.split('::').first namespaces << namespace unless namespaces.include?(namespace) end end namespaces.each do |namespace| module_path = "app/models/#{namespace.underscore}.rb" next if File.exist?(Rails.root.join(module_path)) create_file module_path do <<~RUBY module #{namespace} def self.table_name_prefix "#{namespace.underscore}_" end end RUBY end end end
Source
# File lib/generators/ruby_llm/generator_helpers.rb, line 121 def migration_version "[#{Rails::VERSION::MAJOR}.#{Rails::VERSION::MINOR}]" end
Source
# File lib/generators/ruby_llm/generator_helpers.rb, line 135 def mysql? ::ActiveRecord::Base.connection.adapter_name.downcase.include?('mysql') rescue StandardError false end
Source
# File lib/generators/ruby_llm/generator_helpers.rb, line 7 def parse_model_mappings @model_names = { chat: 'Chat', message: 'Message', tool_call: 'ToolCall', model: 'Model' } model_mappings.each do |mapping| if mapping.include?(':') key, value = mapping.split(':', 2) @model_names[key.to_sym] = value.classify end end @model_names end
Source
# File lib/generators/ruby_llm/generator_helpers.rb, line 129 def postgresql? ::ActiveRecord::Base.connection.adapter_name.downcase.include?('postgresql') rescue StandardError false end
Source
# File lib/generators/ruby_llm/generator_helpers.rb, line 141 def table_exists?(table_name) ::ActiveRecord::Base.connection.table_exists?(table_name) rescue StandardError false end