【问题标题】:Having default Rails generators call a custom generator使用默认的 Rails 生成器调用自定义生成器
【发布时间】:2012-06-07 00:14:40
【问题描述】:

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

  • 让我的自定义生成器调用默认的 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 的gem,但试图将其转换为使用初始化程序,而lib/generators 对我不起作用。脚手架生成器运行,但我的从未被调用。

【问题讨论】:

  • 不,我最终创建了一个新的自定义生成器,它将调用 Rails 的默认值,然后是我的。例如rails g localized_scaffold User name首先调用scaffold User name然后运行我自己的本地化生成代码。

标签: ruby-on-rails ruby generator


【解决方案1】:

对我来说,它适用于 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 中指定源路径

如果“它完全是定制的”,那么叫它一个不同的名字是公平的,不是吗?

【讨论】:

    猜你喜欢
    • 2016-07-21
    • 2013-10-05
    • 1970-01-01
    • 2019-05-02
    • 2015-03-30
    • 2011-11-18
    • 1970-01-01
    • 1970-01-01
    • 2019-08-08
    相关资源
    最近更新 更多