Module: RubyLLM::Generators::GeneratorHelpers
- Included in:
- ChatUIGenerator, InstallGenerator, UpgradeToV17Generator, UpgradeToV19Generator
- Defined in:
- lib/generators/ruby_llm/generator_helpers.rb
Overview
Shared helpers for RubyLLM generators
Instance Method Summary collapse
- #acts_as_chat_declaration ⇒ Object
- #acts_as_message_declaration ⇒ Object
- #acts_as_model_declaration ⇒ Object
- #acts_as_tool_call_declaration ⇒ Object
- #create_namespace_modules ⇒ Object
- #migration_version ⇒ Object
- #mysql? ⇒ Boolean
- #parse_model_mappings ⇒ Object
- #postgresql? ⇒ Boolean
- #table_exists?(table_name) ⇒ Boolean
Instance Method Details
#acts_as_chat_declaration ⇒ Object
52 53 54 55 56 57 58 59 60 61 |
# File 'lib/generators/ruby_llm/generator_helpers.rb', line 52 def acts_as_chat_declaration params = [] add_association_params(params, :messages, , , owner_table: chat_table_name, plural: true) add_association_params(params, :model, model_table_name, model_model_name, owner_table: chat_table_name) "acts_as_chat#{" #{params.join(', ')}" if params.any?}" end |
#acts_as_message_declaration ⇒ Object
63 64 65 66 67 68 69 70 71 72 73 74 |
# File 'lib/generators/ruby_llm/generator_helpers.rb', line 63 def params = [] add_association_params(params, :chat, chat_table_name, chat_model_name, owner_table: ) add_association_params(params, :tool_calls, tool_call_table_name, tool_call_model_name, owner_table: , plural: true) add_association_params(params, :model, model_table_name, model_model_name, owner_table: ) "acts_as_message#{" #{params.join(', ')}" if params.any?}" end |
#acts_as_model_declaration ⇒ Object
76 77 78 79 80 81 82 83 |
# 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, plural: true) "acts_as_model#{" #{params.join(', ')}" if params.any?}" end |
#acts_as_tool_call_declaration ⇒ Object
85 86 87 88 89 90 91 92 |
# File 'lib/generators/ruby_llm/generator_helpers.rb', line 85 def acts_as_tool_call_declaration params = [] add_association_params(params, :message, , , owner_table: tool_call_table_name) "acts_as_tool_call#{" #{params.join(', ')}" if params.any?}" end |
#create_namespace_modules ⇒ Object
94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 |
# File 'lib/generators/ruby_llm/generator_helpers.rb', line 94 def create_namespace_modules namespaces = [] [chat_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 |
#migration_version ⇒ Object
120 121 122 |
# File 'lib/generators/ruby_llm/generator_helpers.rb', line 120 def migration_version "[#{Rails::VERSION::MAJOR}.#{Rails::VERSION::MINOR}]" end |
#mysql? ⇒ Boolean
130 131 132 133 134 |
# File 'lib/generators/ruby_llm/generator_helpers.rb', line 130 def mysql? ::ActiveRecord::Base.connection.adapter_name.downcase.include?('mysql') rescue StandardError false end |
#parse_model_mappings ⇒ Object
7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
# 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 |
#postgresql? ⇒ Boolean
124 125 126 127 128 |
# File 'lib/generators/ruby_llm/generator_helpers.rb', line 124 def postgresql? ::ActiveRecord::Base.connection.adapter_name.downcase.include?('postgresql') rescue StandardError false end |
#table_exists?(table_name) ⇒ Boolean
136 137 138 139 140 |
# File 'lib/generators/ruby_llm/generator_helpers.rb', line 136 def table_exists?(table_name) ::ActiveRecord::Base.connection.table_exists?(table_name) rescue StandardError false end |