ruby-on-rails - 连接到 Rails 模型生成器

标签 ruby-on-rails ruby ruby-on-rails-4

我正在尝试在我的 Rails 4 应用程序中创建一个客户生成器。我跑了

rails g generator bootstrap

这在 lib/generators/bootstrap 中创建了一些文件。包括 bootstrap_generator.rb

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

我希望这个生成器在我运行 rake g model ... 时 Hook 。我该如何实现?

最佳答案

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

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

lib/generators/rails/concerns/concerns_generator.rb

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 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

关于ruby-on-rails - 连接到 Rails 模型生成器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19122354/

相关文章:

css - Rails 4.0 每 3 个 div 循环然后应用类

ruby-on-rails - Rails 2.3 session

ruby-on-rails - 将谷歌地图集成到 Rails 中

ruby-on-rails - 如何在没有模板的情况下使用 Rails 发送邮件?

ruby - Ruby dbi Gem 中出现未定义方法 'deprecate' 错误

ruby-on-rails - 如何在 Windows 上安装 RedCloth?

javascript - Ruby on Rails : Display confirmation message if not includes

javascript - 如何在 Javascript 中格式化 JSON 日期?

ruby-on-rails - ajax 检查电子邮件是否已经存在 Ruby on Rails

email - 网络::SMTPAuthenticationError