当使用Rails :: Engine的Rails生成器时,它似乎没有拾取放入lib目录的任何模板文件。如这里指示使用引擎的Rails 3 Generator自定义模板
现在我有
lib/templates/rails/scaffold_controller
我也曾尝试
lib/my_engine/templates/rails/scaffold_controller
有任何人尝试过这一点。
当使用Rails :: Engine的Rails生成器时,它似乎没有拾取放入lib目录的任何模板文件。如这里指示使用引擎的Rails 3 Generator自定义模板
现在我有
lib/templates/rails/scaffold_controller
我也曾尝试
lib/my_engine/templates/rails/scaffold_controller
有任何人尝试过这一点。
看来,这是不支持的发动机
在Rails应用程序整理需要添加此到路径
module Rails
class Application
module Finisher
include Initializable
initializer :add_generator_templates do
config.generators.templates.unshift(*paths["lib/templates"].existent)
end
......
因此,这必须在发动机的配置来实现,以便照顾这工作。
module MyEngine
class Engine < ::Rails::Engine
config.generators.templates.unshift File.expand_path("lib/templates", root)
end
end
这是错误还是期望的行为?
以上回答(由stellard自己)并没有解决我的情况在Rails 3.2中,但How to override a rails generator template in a gem?修复它。只是指出像我这样的人。
如果在Rails的3.2发动机的根路径使用rails g generator MyGenerator
你会得到这样的事情:
class MyGenerator < Rails::Generators::NamedBase
source_root File.expand_path('../templates', __FILE__)
end
其犯规污染你Engine
类,并且是更本地化的发电机。