【发布时间】:2021-11-04 19:57:39
【问题描述】:
我有一个生成器,可以创建一些视图文件。
我想知道生成器的可扩展性 - 如果生成器模板文件发生变化,是否需要手动修改生成器创建的现有文件?
我知道我可以通过运行生成器命令来覆盖现有文件。但是如果我在文件生成后编辑了文件,覆盖可以删除一些必要的部分。
在现有文件中应用最新生成器模板的最佳方法是什么?
【问题讨论】:
-
我会复制旧文件,运行生成器,然后比较差异。我认为生成器通常不会更新文件。如果创建者实现了该逻辑,也许某些特定的会这样做,但您需要在提供该生成器的 gem 的自述文件中验证这一点。
-
通常会避免更新现有文件(除了在 oneliner 宏调用中折腾),因为它很容易出错并且留给用户。 Ruby 不是一种结构化语言,例如 Lisp,整个程序都可以作为数据进行操作。您应该考虑文件是否需要定期更新,那么它可能应该是 lib 的一部分而不是生成,是否可以通过从 lib 提供更好的 API 来解决。
标签: ruby-on-rails ruby generator