iva*_*off 37 ruby code-generation template-engine erb
我需要ERB(Ruby的模板系统)来模板化非HTML文件.
(相反,我想将它用于源文件,如.java,.cs,...)
如何从命令行"执行" Ruby模板?
Mik*_*use 25
你应该在ruby/bin目录中拥有所需的一切.在我的(WinXP,Ruby 1.8.6)系统上,我有ruby/bin/erb.bat
erb.bat [switches] [inputfile]
-x print ruby script
-n print ruby script with line number
-v enable verbose mode
-d set $DEBUG to true
-r [library] load a library
-K [kcode] specify KANJI code-set
-S [safe_level] set $SAFE (0..4)
-T [trim_mode] specify trim_mode (0..2, -)
-P ignore lines which start with "%"
Run Code Online (Sandbox Code Playgroud)
所以erb your_erb_file.erb
应该把结果写到STDOUT.
(编辑:windows有erb.bat,只是简单的"erb".bat文件只是erb的包装器,我想在任何操作系统上都应该使相同的命令工作几乎相同)
请参阅prag prog book讨论(从页面的中间开始).
另请注意,Jack Herrington编写了一本关于使用Ruby/ERB的代码生成的书.
Sam*_*Sam 24
写一个执行它的ruby脚本.API文档在这里:http: //www.ruby-doc.org/stdlib/libdoc/erb/rdoc/
例如:
template = ERB.new File.read("path/to/template.erb"), nil, "%"
template.result(binding)
Run Code Online (Sandbox Code Playgroud)
(其中绑定是与模板所需的@vars的绑定.)
Yeh*_*atz 14
另一种选择是使用ruby -e,因为ERB itslef非常简单.
就像是:
ruby -rerb -e "puts ERB.new(File.read(<file name here>)).result"
Run Code Online (Sandbox Code Playgroud)
但是,我假设你有一个你想要渲染模板的上下文.你期望得到那个上下文?例如,请查看:
ruby -rerb -e "hello = 'hello'; puts ERB.new('<%= hello %> world').result(binding)"
Run Code Online (Sandbox Code Playgroud)
这将打印出"hello world",使用您定义hello
变量的顶级作为绑定.
mor*_*oth 13
如果你可以将ERB切换到Erubis,你的问题解决就像这样简单:
require 'erubis'
template = File.read("sample_file.erb")
template = Erubis::Eruby.new(template)
template.result(:your_variable => "sample")
Run Code Online (Sandbox Code Playgroud)
在尝试测试我的 Puppet 模板时发现了这个问题。
以这个解决方案结束:
foo.erb
创建一个文件foo.vars.erb
将所有模板变量放入该新文件中,例如:
<% @my_param="foo bar" %>
<% @another_param=123 %>
Run Code Online (Sandbox Code Playgroud)
或同等学历):
<%
@my_param="foo bar"
@another_param=123
%>
Run Code Online (Sandbox Code Playgroud)在命令行上运行:
cat foo.vars.erb foo.erb | erb
Run Code Online (Sandbox Code Playgroud)您的完全渲染模板现在应该打印到标准输出。从那里您可以手动检查输出,或者您可以使用 diff(或其他工具)将其与预渲染的输出进行比较。
归档时间: |
|
查看次数: |
54784 次 |
最近记录: |