我想从帮助程序模块生成规则DSL。我有自定义博客助手,我希望它能自动生成RSS源,因此只要存在特定的元数据,我就不必在Rules
文件中指定任何编译和路由规则。
让我说我的博客位于news.erb
和news\*.md
目录中。 Erb文件在其元数据部分中有博客配置(要显示的文章数量,订购等等)。在预处理中,我有create_blog
函数,根据\page\N
中的元数据生成news.erb
。如果此元数据包含rss: true
部分,我希望create_blog
函数还注册2个附加规则(如果之前未定义)和1个附加文件/feeds/news.xml
:
compile /feeds\/.+/ do
filter :erb
end
route /feeds\/.+/ do
item.identifier.chop + '.xml'
end
我可以正确生成文件,但为了保持网站模块化,我想在create_blog
本身创建上述规则。这允许我稍后,如果我想删除博客,只需注释掉模块而不是更改Rules
文件。