eruby和erb有什么区别?什么考虑因素会驱使我选择其中之一?
我的应用程序正在为网络设备(路由器、负载均衡器、防火墙等)生成配置文件。我的计划是将配置文件模板化,在源文件中使用嵌入的ruby (通过eruby或erb)来做一些事情,比如迭代地为路由器生成所有的接口配置块(这些块都非常相似,只是标签和IP地址不同)。例如,我可能有一个这样的配置模板文件:
hostname sample-router
<%=
r = String.new;
[
["GigabitEthernet1/1", "10.5.16.1"],
["GigabitEthernet1/2", "10.5.17.1"],
["GigabitEthernet1/3", "10.5.18.1"]
].each { |tuple|
r << "interface #{tuple[0]}\n"
r << " ip address #{tuple[1]} netmask 255.255.255.0\n"
}
r.chomp
%>
logging 10.5.16.26它在通过嵌入式ruby解释器( erb或eruby)运行时,会产生以下输出:
hostname sample-router
interface GigabitEthernet1/1
ip address 10.5.16.1 netmask 255.255.255.0
interface GigabitEthernet1/2
ip address 10.5.17.1 netmask 255.255.255.0
interface GigabitEthernet1/3
ip address 10.5.18.1 netmask 255.255.255.0
logging 10.5.16.26发布于 2008-09-16 17:27:52
无关紧要,它们都是一样的。erb是纯ruby,eruby是用C编写的,所以它的速度要快一点。
erubis (第三个)是纯ruby,比上面列出的两个都快。但是我怀疑它的速度对你来说是个瓶颈,所以就用erb吧。它是Ruby标准库的一部分。
发布于 2008-09-16 17:29:41
Eruby是一个外部可执行文件,而erb是Ruby中的一个库。如果您希望独立处理模板文件(例如,快速替换PHP ),则可以使用前者;如果您需要在其他Ruby脚本的上下文中处理它们,则可以使用后者。使用ERB更常见,仅仅是因为它更灵活,但我承认,我曾经涉足eruby,为快速的小实用网站执行.rhtml文件。
发布于 2008-09-17 09:51:39
我正在使用erb做类似的事情,性能对我来说很好。
然而,正如乔迪所说,这取决于你想要在什么上下文中运行-如果你真的要使用你列出的模板,eruby可能会工作得更好,但我猜你实际上会将变量传递给模板,在这种情况下,你需要erb。
仅供参考,当使用erb时,您需要将想要从中获取变量的对象的绑定传递给它,如下所示:
device = Device.new
device.add_interface("GigabitEthernet1/1", "10.5.16.1")
device.add_interface("GigabitEthernet1/2", "10.5.17.1")
template = File.read("/path/to/your/template.erb")
config = ERB.new(template).result(device.binding)https://stackoverflow.com/questions/74782
复制相似问题