Ruby on rails Rails:如何扩展生成器?

Ruby on rails Rails:如何扩展生成器?,ruby-on-rails,ruby-on-rails-3,Ruby On Rails,Ruby On Rails 3,我试图在Rails中扩展模型生成器(Rails g模型)。基本上,我的生成器应该做与模型一相同的事情,但复制2个附加文件。就这么简单 我查看了Railscast#218(),它提供了大量信息,但我找不到任何关于扩展生成器的信息 检查rails的源代码,看起来模型生成器位于lib/rails/generators/rails/model/model_generator.rb中,定义为rails::generators::ModelGenerator 我试图使生成器扩展该类,但结果是: Error:

我试图在Rails中扩展模型生成器(Rails g模型)。基本上,我的生成器应该做与模型一相同的事情,但复制2个附加文件。就这么简单

我查看了Railscast#218(),它提供了大量信息,但我找不到任何关于扩展生成器的信息

检查rails的源代码,看起来模型生成器位于lib/rails/generators/rails/model/model_generator.rb中,定义为rails::generators::ModelGenerator

我试图使生成器扩展该类,但结果是:

Error: uninitialized constant Rails::Generators::ModelGenerator.
我要求这个文件的尝试没有成功


所以我决定停下来问问这里。扩展生成器的正确方法是什么?

看看挂钩和调用

class MyGenerator < Rails::Generators::Base
  def create_my_file
    # Do your generators stuff
    create_file "config/initializers/my.rb", "# Add content here"
    # Create model
    invoke("model", ["model_name", "arg1", "arg2"])
  end
end
classmygenerator
希望这有帮助

  • 生成自定义生成器:

    rails generate generator my_model
    
  • 打开
    lib/generators/my_model/my_model_generator.rb
    并将其更改为:

    require 'rails/generators/active_record/model/model_generator'
    
    class MyModelGenerator < ActiveRecord::Generators::ModelGenerator
      source_root File.expand_path('../templates', __FILE__)
    end
    
    要求“rails/generators/active_record/model/model_generator”
    类MyModelGenerator

  • 这适用于rails引擎。不要忘记添加所需的模板。

    您是否阅读了本指南@Mik_Die是的,但它没有提到任何关于扩展发电机的内容。它确实提到了generate方法,但这不是我想要的。示例:我希望接受模型生成器接受的所有参数。