2012-06-01 59 views
3

需要明确的是,这里不是我想:有默认的Rails生成调用自定义生成

  • 有我的自定义生成调用默认的Rails生成
  • 替换默认的Rails发生器用我自己

我想要做的是有我的生成器被自动调用,当我打电话:

rails generate scaffold User name age:integer 

我不写一个测试替代品或任何东西,它是完全自定义的。我在那里找到关于生成器的所有信息都涉及前两种情况之一,但不是我想要做的。一旦我找到hook_for,我立即认为这正是我所需要的,但它似乎做了相反的事情 - 从我自定义的内部调用另一个Rails生成器(如果我想为我的自定义生成器创建一个测试文件,我会请致电hook_for :test_framework,然后在某处定义TestUnit::MyCustomGenerator类)。

我想我可以用默认脚手架发电机给猴子打电话给我,但感觉很脏。我查看了一些类似https://github.com/Skalar/i18n-yaml-generator之类的宝石,但试图将其转换为使用初始化程序,并且lib/generators不适用于我。 scaffold_generator运行,但我从来没有被调用。

+0

有没有这样的运气? –

+0

不,我最终创建了一个新的自定义生成器,它会调用Rails的默认值,然后是我的。例如'rails g localized_scaffold用户名'首先调用'脚手架用户名',然后运行我自己的本地化生成代码。 –

回答

0

对我来说,从LIB /发电机的工作原理/

$ rails g generator scaffold 
     create lib/generators/scaffold 
     create lib/generators/scaffold/scaffold_generator.rb 
     create lib/generators/scaffold/USAGE 
     create lib/generators/scaffold/templates 
$ rails g scaffold 
Usage: 
    rails generate scaffold NAME [options] 
.... 
     what/will/it/create 

http://guides.rubyonrails.org/generators.html#generators-lookup

另一种可能是:)

  • 叉railties宝石
  • 覆盖的Rails ::发电机:: ScaffoldGenerator类根据您的喜好
  • 本地安装或指定在Gemfile中的urce路径

如果'它的完全自定义',这是公平的称之为不同的名称,不是吗?