Ruby on rails 钩入Rails模型生成器

Ruby on rails 钩入Rails模型生成器,ruby-on-rails,ruby,ruby-on-rails-4,Ruby On Rails,Ruby,Ruby On Rails 4,我正在尝试在rails 4应用程序中创建客户生成器。我跑 rails g generator bootstrap 这在lib/generators/bootstrap中创建了一些文件。包括bootstrap\u生成器.rb class BootstrapGenerator < Rails::Generators::NamedBase source_root File.expand_path('../templates', __FILE__) end 类BootstrapGenera

我正在尝试在rails 4应用程序中创建客户生成器。我跑

rails g generator bootstrap
这在
lib/generators/bootstrap
中创建了一些文件。包括
bootstrap\u生成器.rb

class BootstrapGenerator < Rails::Generators::NamedBase
  source_root File.expand_path('../templates', __FILE__)
end
类BootstrapGenerator

我希望在运行
rake g model…
时将此生成器连接到。我该如何实现这一点呢?

我认为这不是一个干净的解决方案,但无论如何都是可行的:

config/application.rb

module YourApp
  class Application < Rails::Application
    config.generators do |g|
      g.orm             :concerns # to get run our generator under ActiveRecord
      g.test_framework  :rspec
    end
  end
end
require 'rails/generators/active_record/model/model_generator'

module Rails
  module Generators

    hide_namespace 'concerns'

    class ConcernsGenerator < ActiveRecord::Generators::ModelGenerator
      source_root "#{base_root}/active_record/model/templates"

      def create_concern_file
        create_file "app/models/concerns/#{file_name}_concern.rb", <<-FILE
      class #{class_name}Concern

      end
        FILE
      end

      def create_concern_spec
        create_file "spec/models/#{file_name}_concern_spec.rb", <<-FILE
      require 'spec_helper'

      describe #{class_name}Concern
        pending "add some examples to (or delete) #{__FILE__}"
      end
        FILE
      end

    end
  end
end

我认为rails生成器在rails 3和rails 4之间没有太大变化,因此这些railscasts应该仍然有用:


您可能需要为此创建一个新的生成器。可能有一种方法可以通过猴子修补当前的Rails发电机来实现这一点,但大多数人都不是这样处理的。我写这篇文章时github也停机了,所以我无法向您指出任何文件:(我真的不想用猴子修补任何东西。你到底想用这个新生成器做什么?如果你想改变模型生成的方式,那么你需要改变模型的模板,而不是创建一个全新的生成器。当有人运行
rails g…
时,我想基于这个m创建一个额外的文件odel类似于rspec创建相应的model_spec.rb文件的方式好吧,你是如何找到方法的?rails网站上有没有我错过的明确指南?它深入分析了子系统是如何工作的。每件事都围绕着源代码
$ rails g model Product name:string description:text
      invoke  concerns
      create    db/migrate/20131005122831_create_products.rb
      create    app/models/product.rb
      invoke    rspec
      create      spec/models/product_spec.rb
      create    app/models/concerns/product_concern.rb
      create    spec/models/product_concern_spec.rb