如何在gem中覆盖Rails Generator模板?
|
如果要覆盖生成器模板(不替换生成器本身),则可以在Rails 3中将文件放在lib / templates中适当命名的位置,Rails会找到它们。
如果要使用宝石怎么办?我正在尝试采用我团队的标准化支架格式并将其形象化,以便我们可以在所有项目中共享并轻松更新它,而不是在每个项目中将文件复制到lib /中。在我创建了新生成器的情况下,这很好用;我在application.rb中使用config.generators挂接到它,Rails找到了它。但是,当我将模板文件放到gem的lib / templates中时,Rails首先找到它自己的默认模板,然后渲染它们而不是我的模板。我认为搜索顺序为RAILS_ROOT / lib / templates,RAILS_GEMS / lib / templates,OTHER_GEMS / lib / templates。
有什么解决方案?我在这方面没有找到太多的文档,并且通过Rails进行代码划分还没有提出明显的解决方案。谢谢!
没有找到相关结果
已邀请:
6 个回复
链眷克袒姜
所以改用这个:
曝匿弄罚
如果模板在[GEM] / lib / templates内具有与您要覆盖的默认模板的路径相匹配的路径,则此方法应该起作用。例如,如果您已完成此操作并创建了[GEM] /lib/templates/active_record/model/model.rb,它将覆盖默认的AR模型模板。 不需要生成器的monkeypatching。 编辑:请注意,由于此答案最初发布,\“ config.generators \”已从Rails中删除。按照下面的pixelearth答案,使用
。
鞋扣蚊冈借
奇迹般有效! UPD。我试图用模板创建一个gem,并在Rails :: Engine中使用它。但这需要这样做:
渴翅吮斡撤
净爽
伞腹