国产一区二区精品久久_蜜桃狠狠狠狠狠狠狠狠狠_午夜视频精品_激情都市一区二区

當前位置:首頁 > 網站舊欄目 > 學習園地 > 設計軟件教程 > 每天一劑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  

安徽新華電腦學校專業職業規劃師為你提供更多幫助【在線咨詢