Rails在以下地方查找用戶自定義的Generators:
RAILS_ROOT/lib/generators
RAILS_ROOT/vendor/generators
RAILS_ROOT/vendor/plugins/any_subdirectory/generators
~/.rails/generators
以及以_generator為后綴的Gems
我們看看一個例子代碼:
- class TumblepostGenerator < Rails::Generator::NamedBase
- def manifest
- record do |m|
- m.class_collisions class_name
- m.template "app/controllers/controller_template.rb",
- "app/controllers/#{file_name}_controller.rb"
- m.template "app/models/model_template.rb",
- "app/models/#{file_name}.rb"
- m.directory File.join('app/views', file_name)
- m.template "app/views/form_template.rhtml",
- "app/views/#{file_name}/_form.rhtml"
- m.template "app/views/view_template.rhtml",
- "app/views/#{file_name}/_view.rhtml"
- m.readme "POST_GENERATION_REMINDER"
- end
- end
- end
其中Rails::Generator::NamedBase是ruby script/generator后面帶參數的,而Rails::Generator::Base是不帶參數的
生成的文件會先用ERB解析,這樣我們可以自己構建生成文件的模板,如:
- class <%= class_name %>Controller < TumblepostController
- def new
- @thing = <%= class_name %>.new
- end
如果我們要生成數據庫Migration,我們可以這樣寫:
- m.migration_template "db/migrations/migration_template.rb", "db/migrate"
事實上已經有很多Generators創建好并以gems部署了,讓我搜索一下:
- gem search -r generator
安徽新華電腦學校專業職業規劃師為你提供更多幫助【在線咨詢】