如何在Rails 3中创建自定义脚手架生成器?

时间:2012-04-16 23:04:13

标签: ruby-on-rails ruby

有这些轨道广播。

http://railscasts.com/episodes/218-making-generators-in-rails-3有了这个,你会发现如何 创建样式表和脚手架生成器。

http://railscasts.com/episodes/216-generators-in-rails-3通过这个,你可以找到如何添加一些文件来修改脚手架视图。

我想混合两者。我想创建一个也创建脚手架视图的生成器。有点像Ryan Bates漂亮的发电机或web_app_theme宝石(https://github.com/pilu/web-app-theme)。我一直在寻找一个教程或一些信息,指出我正确的方向,但我找不到我正在寻找的东西。

我知道我很亲密。我已经知道如何使用Railcast 218创建一个生成器,但是现在,我如何才能创建视图文件呢?

我想运行这样的命令......

rails g my_scaffold_generator Post title:string body:text

1 个答案:

答案 0 :(得分:9)

这可能为时已晚,无法提供帮助,但正如我在Google上搜索相同信息时发现的那样......

在我看来,最好的方法,至少是学习绳索,是复制,然后改变现有的脚手架发电机。

所以第一件让我失望的事情就是找到默认模板,这些模板不在你的rails-3.2.0目录中(或者你所使用的任何版本),而是在railties-3.2.0中。因此,对于我基于RVM的安装,他们在:

/Users/leo/.rvm/gems/ruby-1.9.3-p194@gemset/gems/railties-3.2.0/lib/rails/generators/

[注意:您的gems目录可能完全在其他地方,使用$> gem environment查找您的宝石路径]

此处erb/scaffold/templates/包含您期望的文件(new.html.erb_form.html.erb等。)

您可以将这些文件复制到应用的根目录,复制到lib/templates/erb/scaffold/,然后使用它们代替默认值。

如果要在自定义生成器中使用它们,有两种方法:

1)使用hook_for从您的生成器调用常规ERB脚手架生成器。

2)使用copy_file和类似方法in Thor移动/处理您自己的自定义生成器中的模板,将它们移动到位。

这方面有一个不错的Rails Guide,虽然我发现直到我开始在.../railties-3.2.0/lib/rails/generators/...中挖掘并查看默认值的结构时我才真正得到它。