Class: RubyLLM::Generators::InstallGenerator
- Inherits:
-
Rails::Generators::Base
- Object
- Rails::Generators::Base
- RubyLLM::Generators::InstallGenerator
show all
- Includes:
- Rails::Generators::Migration, GeneratorHelpers
- Defined in:
- lib/generators/ruby_llm/install/install_generator.rb
Overview
Generator for RubyLLM Rails models and migrations
Constant Summary
GeneratorHelpers::APPLICATION_MODEL_TYPES, GeneratorHelpers::DEFAULT_MODEL_NAMES
Class Method Summary
collapse
Instance Method Summary
collapse
#acts_as_chat_declaration, #acts_as_message_declaration, #chat_controller_class_name, #chat_job_class_name, #create_migration_class_name, #create_namespace_modules, #gem_in_bundle?, #message_controller_class_name, #migration_version, #model_controller_class_name, #model_model_name, #model_resource_name, #model_variable_name, #mysql?, #parse_model_mappings, #postgresql?, #reference_type, #table_exists?, #tailwind_available?, #tool_call_variable_name, #ui_template, #ui_variant, #unprocessable_content_status, #usage_operations_sql, #usage_statuses_sql, #validate_model_mapping!
Class Method Details
.next_migration_number(dirname) ⇒ Object
26
27
28
|
# File 'lib/generators/ruby_llm/install/install_generator.rb', line 26
def self.next_migration_number(dirname)
::ActiveRecord::Generators::Base.next_migration_number(dirname)
end
|
Instance Method Details
#create_convention_directories ⇒ Object
50
51
52
53
54
55
|
# File 'lib/generators/ruby_llm/install/install_generator.rb', line 50
def create_convention_directories
%w[agents tools schemas prompts].each do |name|
empty_directory "app/#{name}"
create_file "app/#{name}/.gitkeep" unless File.exist?(Rails.root.join("app/#{name}/.gitkeep"))
end
end
|
#create_initializer ⇒ Object
46
47
48
|
# File 'lib/generators/ruby_llm/install/install_generator.rb', line 46
def create_initializer
template 'initializer.rb.tt', 'config/initializers/ruby_llm.rb'
end
|
#create_migration_files ⇒ Object
30
31
32
33
34
35
36
37
|
# File 'lib/generators/ruby_llm/install/install_generator.rb', line 30
def create_migration_files
migration_template 'create_ruby_llm_records_migration.rb.tt',
'db/migrate/create_ruby_llm_records.rb'
migration_template 'create_chats_migration.rb.tt',
"db/migrate/create_#{chat_table_name}.rb"
migration_template 'create_messages_migration.rb.tt',
"db/migrate/create_#{message_table_name}.rb"
end
|
#create_model_files ⇒ Object
39
40
41
42
43
44
|
# File 'lib/generators/ruby_llm/install/install_generator.rb', line 39
def create_model_files
create_namespace_modules
template 'chat_model.rb.tt', "app/models/#{chat_model_name.underscore}.rb"
template 'message_model.rb.tt', "app/models/#{message_model_name.underscore}.rb"
end
|
#install_active_storage ⇒ Object
57
58
59
60
61
62
|
# File 'lib/generators/ruby_llm/install/install_generator.rb', line 57
def install_active_storage
return if options[:skip_active_storage]
say ' Installing ActiveStorage for file attachments...', :cyan
rails_command 'active_storage:install'
end
|
#show_install_info ⇒ Object
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
|
# File 'lib/generators/ruby_llm/install/install_generator.rb', line 64
def show_install_info
say "\n ✅ RubyLLM installed!", :green
say ' ✅ ActiveStorage configured for file attachments support', :green unless options[:skip_active_storage]
say "\n Next steps:", :yellow
say ' 1. Run: bin/rails db:migrate'
say ' 2. Run: bin/rails ruby_llm:load_models'
say ' 3. Set your API keys in config/initializers/ruby_llm.rb'
say " 4. Start chatting: #{chat_model_name}.create!(model: 'gpt-5.6-luna').ask('Hello!')"
say " 5. Optional UI: #{chat_ui_generator_command}"
if options[:skip_active_storage]
say "\n 📎 Note: ActiveStorage was skipped", :yellow
say ' File attachments won\'t work without ActiveStorage.'
say ' To enable later:'
say ' 1. Run: bin/rails active_storage:install && bin/rails db:migrate'
say " 2. Add to your #{message_model_name} model: has_many_attached :attachments"
end
say "\n 📚 Documentation: https://rubyllm.com", :cyan
say "\n ❤️ Love RubyLLM?", :magenta
say ' • ⭐ Star on GitHub: https://github.com/crmne/ruby_llm'
say ' • 🐦 Follow for updates: https://x.com/paolino'
say "\n"
end
|