扩展脚手架生成器
Extending scaffold generator
有没有办法在脚手架生成器完成后触发我自己的生成器?
类似 rails g scaffold HighScore game:string score:integer
的内容将触发由 rails generate generator my_generator
创建的 my_generator
我用另一种方式解决这个问题。
本来我的想法是:
- 我运行一个脚手架生成器
- 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
中共享文件
有没有办法在脚手架生成器完成后触发我自己的生成器?
类似 rails g scaffold HighScore game:string score:integer
的内容将触发由 rails generate generator my_generator
我用另一种方式解决这个问题。
本来我的想法是:
- 我运行一个脚手架生成器
- 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
中共享文件