Class: Contai::Generators::InstallGenerator

Inherits:
Rails::Generators::Base
  • Object
show all
Defined in:
lib/generators/contai/install_generator.rb

Instance Method Summary collapse

Instance Method Details

#add_routesObject



12
13
14
# File 'lib/generators/contai/install_generator.rb', line 12

def add_routes
  route 'post "/contai/generate", to: "contai/generations#create", as: "contai_generation"'
end

#copy_assetsObject



27
28
29
30
# File 'lib/generators/contai/install_generator.rb', line 27

def copy_assets
  template 'contai.js', 'app/assets/javascripts/contai.js'
  template 'contai.css', 'app/assets/stylesheets/contai.css'
end

#create_initializerObject



8
9
10
# File 'lib/generators/contai/install_generator.rb', line 8

def create_initializer
  template 'initializer.rb', 'config/initializers/contai.rb'
end

#create_jobObject



32
33
34
# File 'lib/generators/contai/install_generator.rb', line 32

def create_job
  template 'contai_generation_job.rb', 'app/jobs/contai_generation_job.rb'
end

#create_stimulus_controllerObject



16
17
18
19
20
21
22
23
24
25
# File 'lib/generators/contai/install_generator.rb', line 16

def create_stimulus_controller
  if stimulus_detected?
    template 'contai_controller.js', 'app/javascript/controllers/contai_controller.js'
    
    say "Stimulus controller created. Make sure to register it in your application:", :green
    say "// app/javascript/controllers/application.js"
    say 'import ContaiController from "./contai_controller"'
    say 'application.register("contai", ContaiController)'
  end
end

#show_instructionsObject



36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
# File 'lib/generators/contai/install_generator.rb', line 36

def show_instructions
  say "\n" + "="*60
  say "Contai has been installed successfully!", :green
  say "="*60
  say "\nNext steps:"
  say "1. Configure your AI providers in config/initializers/contai.rb"
  say "2. Add 'include Contai::Generatable' to your models"
  say "3. Configure your models with the contai DSL"
  say "4. Use contai_button or contai_field_with_button helpers in your views"
  say "\nExample model configuration:"
  say <<~EXAMPLE
    class Article < ApplicationRecord
      include Contai::Generatable
      
      contai do
        prompt_from :title, :description
        output_to :body
        provider :openai, api_key: ENV['OPENAI_API_KEY']
        template "Write about: {{title}} - {{description}}"
      end
    end
  EXAMPLE
end