覆盖Rails脚手架发电机

rails中的scaffold生成器从位于lib/rails/generators/erb/scaffold/templates railties路径中的lib/rails/generators/erb/scaffold/templates以及项目中的lib/templates文件夹生成MVC层。

如果您将原始文件从railties文件夹复制到项目lib文件夹,那么您将能够自定义原始scaffold生成器,正如Daniel Fone在他的博客中解释的那样。

原始Rails生成器在视图层中使用5个文件:

  • _form.html.erb
  • edit.html.erb
  • index.html.erb
  • new.html.erb
  • show.html.erb

我想知道是否有办法通过向集合中添加另一个文件来扩展此行为。 像_header.html.erb_info.html.erb (我设计的一些部分)。

好几个月后我找到了解决方案。 而不是创建一个新的生成器具有Rails 文档状态,我覆盖默认生成器,但在我的项目lib文件夹中。

在此处输入图像描述

原始的scaffold_generator.rb位于~/.rvm/gems/ruby-2.1.0/gems/railties-4.2.4/lib/rails/generators/erb/scaffold 。 要添加新文件( _info.html.erb ),我们会将其添加到available_views方法中。

 def available_views %w(index edit show new _form _info) end 

希望它可以帮到某人。

对于那些懒惰的人,这里有一个快速命令,可以将默认的railties erb模板复制到Rails中的正确位置:

 mkdir -p lib/templates/erb/scaffold && \ cp $(bundle show railties)/lib/rails/generators/erb/scaffold/templates/* lib/templates/erb/scaffold