0

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

类似的东西rails g scaffold HighScore game:string score:integer会触发 my_generator 创建的rails generate generator my_generator

4

1 回答 1

1

兴奋剂3

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

本来我的想法是:

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

您可以按照文档所述自定义脚手架工作流程

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

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/

我不记得我是如何生成这个结构的,但我在存储库中共享文件

于 2019-06-06T05:14:49.367 回答