Kyl*_*cot 2 ruby ruby-on-rails ruby-on-rails-4
我正在尝试在rails 4应用程序中创建一个客户生成器.我跑了
rails g generator bootstrap
Run Code Online (Sandbox Code Playgroud)
这创建了一些文件lib/generators/bootstrap.包含bootstrap_generator.rb
class BootstrapGenerator < Rails::Generators::NamedBase
source_root File.expand_path('../templates', __FILE__)
end
Run Code Online (Sandbox Code Playgroud)
我希望这个发生器在我运行时挂钩rake g model ....我该如何实现呢?
无论如何,我认为这不是干净但工作的解决方案:
配置/ 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
Run Code Online (Sandbox Code Playgroud)
LIB /发电机/导轨/关注/ 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
Run Code Online (Sandbox Code Playgroud)
给我们的是:
$ 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
Run Code Online (Sandbox Code Playgroud)