当前位置:首页 > 网站旧栏目 > 学习园地 > 设计软件教程 > 每天一剂Rails良药之Automating Development With Your Own Generators

每天一剂Rails良药之Automating Development With Your Own Generators
2010-01-14 07:10:34  作者:  来源:
今天看看怎么写自己的Generators
Rails在以下地方查找用户自定义的Generators:
RAILS_ROOT/lib/generators
RAILS_ROOT/vendor/generators
RAILS_ROOT/vendor/plugins/any_subdirectory/generators
~/.rails/generators
以及以_generator为后缀的Gems
我们看看一个例子代码:
Java代码 复制代码
  1. class TumblepostGenerator < Rails::Generator::NamedBase   
  2.   def manifest   
  3.     record do |m|   
  4.       m.class_collisions class_name   
  5.       m.template  "app/controllers/controller_template.rb",   
  6.                   "app/controllers/#{file_name}_controller.rb"  
  7.       m.template  "app/models/model_template.rb",   
  8.                   "app/models/#{file_name}.rb"  
  9.       m.directory File.join('app/views', file_name)   
  10.       m.template  "app/views/form_template.rhtml",   
  11.                   "app/views/#{file_name}/_form.rhtml"  
  12.       m.template  "app/views/view_template.rhtml",   
  13.                   "app/views/#{file_name}/_view.rhtml"  
  14.   
  15.       m.readme "POST_GENERATION_REMINDER"  
  16.     end   
  17.   end   
  18. end  

其中Rails::Generator::NamedBase是ruby script/generator后面带参数的,而Rails::Generator::Base是不带参数的
生成的文件会先用ERB解析,这样我们可以自己构建生成文件的模板,如:
Java代码 复制代码
  1. class <%= class_name %>Controller < TumblepostController   
  2.   def new  
  3.     @thing = <%= class_name %>.new  
  4.   end  

如果我们要生成数据库Migration,我们可以这样写:
Java代码 复制代码
  1. m.migration_template "db/migrations/migration_template.rb""db/migrate"  

事实上已经有很多Generators创建好并以gems部署了,让我搜索一下:
Java代码 复制代码
  1. gem search -r generator  

安徽新华电脑学校专业职业规划师为你提供更多帮助【在线咨询