乐者为王

Do one thing, and do it well.

改写Rails 2.x generator到Rails 3.x时的一些记录

因为有个基于Rails 2.x的项目用到了feedback插件,在把项目迁移到Rails 3.x版本后,需要让feedback也支持Rails 3.x。但是原作者早已不再更新该插件,所以只能自己动手。花了两天时间查找资料,修改代码,终于完成。

Rails 3.x中生成generator可用下面的命令:

1
2
3
4
5
rails g generator feedback_form
      create  lib/generators/feedback_form
      create  lib/generators/feedback_form/feedback_form_generator.rb
      create  lib/generators/feedback_form/USAGE
      create  lib/generators/feedback_form/templates
1
2
3
class InitializerGenerator < Rails::Generators::NamedBase
  source_root File.expand_path("../templates", __FILE__)
end

生成基类也从Rails::Generators::Base变成了Rails::Generators::NamedBase。它们的区别是Rails::Generators::NamedBase期望至少一个参数。

USAGE文件里的内容是输入-h选项时显示的文档:

1
2
3
rails generate feedback_form --help
Usage:
  rails generate feedback_form NAME [options]

Rails 2.x中的manifest可以删除了,因为在3.x的generator中每个public方法在生成过程中会被自动调用。

Comments