Cuando se usan los generadores de rieles con un Rails :: Engine, parece que no recoge ningún archivo de plantilla que se coloca en el directorio lib. Como se indica aquí
Ahora mismo tengo
lib/templates/rails/scaffold_controller
También he intentado
lib/my_engine/templates/rails/scaffold_controller
Alguien más ha intentado esto.
Respuestas
2 para la respuesta № 1Parece que esto no es compatible con los motores.
En una aplicación de Rails, Finisher se encarga de agregar esto a la ruta.
module Rails
class Application
module Finisher
include Initializable
initializer :add_generator_templates do
config.generators.templates.unshift(*paths["lib/templates"].existent)
end
......
Por lo tanto, esto debe hacerse en la configuración del motor para que esto funcione.
module MyEngine
class Engine < ::Rails::Engine
config.generators.templates.unshift File.expand_path("lib/templates", root)
end
end
¿Es este un error o el comportamiento deseado?
0 para la respuesta № 2
La respuesta anterior (por el mismo Stellard) no soluciona mi caso en Rails 3.2, pero ¿Cómo anular una plantilla de generador de rieles en una gema? arreglalo. Solo señalo para la persona como yo.
0 para la respuesta № 3
Si utiliza rails g generator MyGenerator
en la ruta raíz de un motor Rails 3.2 obtendrás algo como esto:
class MyGenerator < Rails::Generators::NamedBase
source_root File.expand_path("../templates", __FILE__)
end
que no contamina tu Engine
Clase y es mucho más localizada al generador.