我的目标是在ERB模板驱动的Rails(3)应用程序中生成静态html,javascript和图像文件的目录 . 例如,作为开发人员,我可能想要生成/更新这些文件:
#{Rails.root}/public/products/baseball.html
#{Rails.root}/public/products/football.js
..来自以下模板文件:
#{Rails.root}/product_templates/baseball.html.erb
#{Rails.root}/product_templates/football.js.erb
理想情况下,模板可以访问我的应用程序的Rails环境(包括URL帮助程序,查看助手,部分等) .
实现这一目标的最新和最好的方法是什么?
我尝试使用自定义Rails生成器,但发现我需要编写自定义逻辑来跳过非ERB文件,替换文件名等 . 必须有更好的方法 .
3 回答
这就是我完成类似的事情 . 它接受源目标和目标目录,清除目标,然后处理源目录,ERB处理文件并将它们放在目标中或简单地复制它们(在on-ERB文件的情况下) . 需要修改它以处理递归处理目录 .
我从rake任务中调用它,如下所示:
我不确定你要做什么,这可能有助于提供更好的答案,但这里有一些有用的信息:
您可以直接调用erb,有关此处的一些信息,可能已经在执行:
http://www.ruby-doc.org/stdlib/libdoc/erb/rdoc/classes/ERB.html
对于模板文件列表,一个简单的Dir.glob应该能够帮助您轻松找到特定文件并循环遍历它们:
http://ruby-doc.org/core/classes/Dir.html#M000629
我不知道如何建议你的棘手部分是访问帮助程序和Rails提供的其他东西 . 您编写的帮助程序只是模块,因此您可以将它们混合在一起,类似于内置的rails帮助程序 .
这很有趣并且相关但不能直接回答你的问题,因为它使用Liquid模板引擎而不是ERB,但除此之外,它会执行你正在谈论的一些静态网站生成:
https://github.com/mojombo/jekyll
你看过Rails模板了吗?
http://m.onkey.org/rails-templates例如..
不确定你到底得到了什么..你是否试图通过提供一些参数来生成客户端网站..最终目标?