Creé un generador para un controlador en rieles 3. Ahora quiero usar este generador como el generador predeterminado cuando uso el generador de andamios.Anular generador de andamios predeterminado en rieles 3
¿Es esto posible?
Creé un generador para un controlador en rieles 3. Ahora quiero usar este generador como el generador predeterminado cuando uso el generador de andamios.Anular generador de andamios predeterminado en rieles 3
¿Es esto posible?
Puede anular las plantillas que utiliza Rails para sus generadores. En este caso, simplemente coloque el archivo en lib/templates/scaffold_controller/controller.rb
y modifíquelo como lo desee. La próxima vez que ejecute rails g scaffold [modelName]
, elegirá esta nueva plantilla de controlador y la usará.
Esto está cubierto en Section 6 of the Creating and Customizing Rails Generators guía oficial.
La posición correcta para el archivo de controlador personalizado es lib/templates/rails/scaffold_controller/controller.rb
Si simplemente desea utilizar su propia plantilla de controlador, sólo puede ponerlo en lib/templates/rails/scaffold_controller/controller.rb
Si desea reemplazar el código scaffold_controller_generator
sí, por ejemplo, para que el andamio del controlador genere archivos de clase adicionales. puede crear lib/generators/rails/my_scaffold_controller/my_scaffold_controller_generator.rb
con plantillas bajo lib/generators/rails/my_scaffold_controller/templates
.
Recuerde señalar carriles en su nuevo scaffold_controller en config/application.rb
:
config.generators do |g|
g.scaffold_controller = "my_scaffold_controller"
end
Para my_scaffold_controller_generator.rb
se podía copiar de la gema railties bajo railties-3.x.x/lib/rails/generators/rails/scaffold_controller
si desea modificar el comportamiento por defecto, o heredar de ella si lo que desea es agregar funcionalidad:
require 'rails/generators/rails/scaffold_controller/scaffold_controller_generator'
module Rails
module Generators
class MyScaffoldControllerGenerator < ScaffoldControllerGenerator
source_root File.expand_path("../templates", __FILE__)
def new_funtionality
end
end
end
end
Esto parece haber cambiado ligeramente con rieles 4. se puede ver qué plantilla del generador buscará en la línea de invocación cuando se genera el andamio, una nd su nombre de carpeta de la plantilla debe coincidir con esto:
rails generate scaffold blub
...
invoke responders_controller
Si está utilizando rieles g blubs scaffold_controller la ubicación de la plantilla debe ser:
lib/templates/rails/scaffold_controller/controller.rb
Si está utilizando rieles g andamio blub la ubicación de la plantilla debe ser:
lib/templates/rails/responders_controller/controller.rb
Si alguien i Me pregunto por qué esto no está funcionando en una instalación predeterminada de Rails 4, es porque jbuilder se está insertando en la ruta de la plantilla antes de la ubicación de anulación. No necesito jbuilder, así que lo eliminé, pero también informé de un problema en Github. Espero que se solucione pronto.
pull request link? –
ACTUALIZACIÓN: lib/templates/rails/scaffold_controller/controller.rb solucionó mi problema. lo tenía en lib/generators/templates/rails/scaffold_controller/controller.rb –
Tu camino no funciona para mí. La segunda respuesta es correcta. – ujifgc
Nota para todos aquellos que buscan las plantillas de generador predeterminadas para personalizar, en el momento de la escritura viven en GEM PATH en 'gems/railties-3.x.x/lib/rails/generators'. Puede encontrar su PISTA DE GEM (s) usando '$> gem environment' en la línea de comando. – Leo