扩展脚手架生成器

Extending scaffold generator

有没有办法在脚手架生成器完成后触发我自己的生成器?

类似 rails g scaffold HighScore game:string score:integer 的内容将触发由 rails generate generator my_generator

创建的 my_generator

excid3

我用另一种方式解决这个问题。

本来我的想法是:

  • 我运行一个脚手架生成器
  • IT 生成所有标准文件
  • 然后它将运行我自己的脚本(生成器)在
  • 之后

您可以自定义脚手架工作流程as the documentation says

所以我定义了一个这样的脚手架生成器

config/application.rb

# resource_controller defines which generator to use 
# for generating a controller when using rails generate the resource. 
# Defaults to :controller.

# scaffold_controller different from resource_controller, defines which generator 
# to use for generating a scaffolded controller when using rails generate scaffold. 
# Defaults to :scaffold_controller.

config.generators do |gen|
  gen.orm :active_record
  gen.template_engine :haml
  gen.test_framework :rspec,
                     fixtures: true,
                     view_specs: true,
                     helper_specs: true,
                     routing_specs: true,
                     controller_specs: true,
                     request_specs: true
  gen.helper :helper_and_policy
  gen.scaffold_controller :controller_with_smart_listing
  gen.fixture_replacement :factory_bot, dir: "spec/factories"
end

如您所见,我只更改了适合我的问题的 gen.scaffold_controller。但我认为也可以选择更改脚手架模型生成器。

然后我为我的生成器创建了一个文件夹lib/generators/rails/controller_with_smart_listing/

我不记得我是如何生成这个结构的,但我在 repository

中共享文件