Class: BugBunny::Generators::InstallGenerator

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

Overview

Generador de instalación estándar de Rails para BugBunny.

Este generador se encarga de realizar el “scaffolding” inicial necesario para integrar la gema en una aplicación Rails existente.

Acciones principales:

  1. Crea el archivo de configuración (Initializer).

  2. Establece la estructura de directorios para los controladores AMQP.

Examples:

Ejecución desde la terminal

rails generate bug_bunny:install

Instance Method Summary collapse

Instance Method Details

#create_directoriesvoid

This method returns an undefined value.

Crea la estructura de carpetas necesaria para el patrón MVC de BugBunny.

Genera:

  • ‘app/bug_bunny/controllers/`: Directorio donde vivirán los controladores de consumidores.

  • ‘.keep`: Archivo marcador para asegurar que Git rastree la carpeta aunque esté vacía.



40
41
42
43
# File 'lib/generators/bug_bunny/install/install_generator.rb', line 40

def create_directories
  empty_directory 'app/bug_bunny/controllers'
  create_file 'app/bug_bunny/controllers/.keep', ''
end

#create_initializervoid

This method returns an undefined value.

Genera el archivo de configuración inicial. Copia la plantilla ‘initializer.rb` a `config/initializers/bug_bunny.rb` en la app destino.



29
30
31
# File 'lib/generators/bug_bunny/install/install_generator.rb', line 29

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

#update_claude_mdvoid

This method returns an undefined value.

Escribe el bloque inicial de BugBunny en CLAUDE.md del proyecto consumidor.

Si CLAUDE.md no existe, crea uno mínimo con la sección correspondiente. Si ya existe, agrega la sección ‘## Gemas internas` con el bloque de bug_bunny. En ambos casos, el rake task `bug_bunny:sync` se encarga de las actualizaciones futuras.



52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
# File 'lib/generators/bug_bunny/install/install_generator.rb', line 52

def update_claude_md
  spec = Gem::Specification.find_by_name('bug_bunny')
  version = spec.version.to_s
  docs_path = File.join(spec.gem_dir, 'docs', 'ai')

  block = <<~BLOCK
    ## Gemas internas

    ### bug_bunny
    - **Version:** #{version}
    - **Docs:** #{docs_path}
    - **Updated:** #{Time.now.strftime('%Y-%m-%d')}
  BLOCK

  claude_md = File.join(destination_root, 'CLAUDE.md')

  if File.exist?(claude_md)
    content = File.read(claude_md)
    if content.include?('### bug_bunny')
      say_status :skip, 'CLAUDE.md already has a bug_bunny block — run `rake bug_bunny:sync` to update'
    elsif content.include?('## Gemas internas')
      inject_into_file 'CLAUDE.md', "\n#{block.lines.drop(2).join}", after: "## Gemas internas\n"
      say_status :update, 'Added bug_bunny block to existing ## Gemas internas section in CLAUDE.md'
    else
      append_to_file 'CLAUDE.md', "\n#{block}"
      say_status :update, 'Added ## Gemas internas section to CLAUDE.md'
    end
  else
    create_file 'CLAUDE.md', "# #{Rails.application.class.module_parent_name}\n\n#{block}"
    say_status :create, 'CLAUDE.md created with bug_bunny block'
  end

  say '  Add `bundle exec rake bug_bunny:sync` to bin/setup to keep this block up to date.'
end