Class: BugBunny::Generators::InstallGenerator
- Inherits:
-
Rails::Generators::Base
- Object
- Rails::Generators::Base
- BugBunny::Generators::InstallGenerator
- 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:
-
Crea el archivo de configuración (Initializer).
-
Establece la estructura de directorios para los controladores AMQP.
Instance Method Summary collapse
-
#create_directories ⇒ void
Crea la estructura de carpetas necesaria para el patrón MVC de BugBunny.
-
#create_initializer ⇒ void
Genera el archivo de configuración inicial.
-
#update_claude_md ⇒ void
Escribe el bloque inicial de BugBunny en CLAUDE.md del proyecto consumidor.
Instance Method Details
#create_directories ⇒ void
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_initializer ⇒ void
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_md ⇒ void
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 |