让默认的Rails生成器调用自定义生成器

时间:2012-06-01 18:37:43

标签: ruby-on-rails ruby generator

要清楚,这不是我想要的:

  • 让我的自定义生成器调用默认的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运行但我的永远不会被调用。

1 个答案:

答案 0 :(得分:0)

对我来说,它适用于lib / generators /

$ 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

另一种方式可能是:)

  • fork railties gem
  • 根据您的喜好覆盖Rails :: Generators :: ScaffoldGenerator类
  • 在本地安装或在Gemfile中指定源路径

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