定位任何给定 gem 的内置脚手架模板的过程是什么?

问题描述

我正在为应用程序调整一些脚手架模板,所以我主要只想复制内置/认模板。我的问题是我可以遵循什么过程来定位模板?

例如,感谢 Tim Krins 的有用回答,我现在知道可以查看:

  • cd $(bundle show railties)/lib/rails/generators/rails/scaffold_controller/templates/ 用于控制器模板 (reference)
  • cd $(bundle show activerecord)/lib/rails/generators/active_record/model/templates/ 用于模型模板 (reference)

我还设法将他的 bundle show <gem> 技巧与通过 haml-rails 中的 Github 问题进行探索结合起来,找出 HAML 模板的路径是:

  • cd $(bundle show haml-rails)/lib/generators/haml/scaffold/templates

我还没有能够使用这些知识来找出通用的解决方案,所以下次我必须再次搜索 StackOverflow。

我将如何自行确定各种测试文件的模板位置(而不告诉您我使用的是哪个测试框架)?我如何找到用于 invoke resource_route 步骤的模板?

  1. 如何确定要查看的宝石? (例如,我怎么知道上面的 railties 与 activerecord ?)
  2. 如何确定要查看的路径? (例如,我怎么知道要查看 activerecord/.../activerecord 而不是 railties/.../rails?)

解决方法

你想改变哪个宝石?

在 Devise 或 Spree gems 的情况下需要的是在 app 目录中重新创建文件路径,然后从 gem 的 github 存储库中复制/克隆 erb/haml 文件,并在本地文件。

有一个名为 Deface 的 gem,它可以让您在视图中编辑特定的 html 组件,而无需重新创建整个视图。这是一个更复杂但最终更易于维护的路径 - 取决于您的更改范围。