首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用eruby还是erb?

使用eruby还是erb?
EN

Stack Overflow用户
提问于 2008-09-16 17:24:29
回答 3查看 3.9K关注 0票数 5

eruby和erb有什么区别?什么考虑因素会驱使我选择其中之一?

我的应用程序正在为网络设备(路由器、负载均衡器、防火墙等)生成配置文件。我的计划是将配置文件模板化,在源文件中使用嵌入的ruby (通过eruby或erb)来做一些事情,比如迭代地为路由器生成所有的接口配置块(这些块都非常相似,只是标签和IP地址不同)。例如,我可能有一个这样的配置模板文件:

代码语言:javascript
复制
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)运行时,会产生以下输出:

代码语言:javascript
复制
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
EN

回答 3

Stack Overflow用户

发布于 2008-09-16 17:27:52

无关紧要,它们都是一样的。erb是纯ruby,eruby是用C编写的,所以它的速度要快一点。

erubis (第三个)是纯ruby,比上面列出的两个都快。但是我怀疑它的速度对你来说是个瓶颈,所以就用erb吧。它是Ruby标准库的一部分。

票数 9
EN

Stack Overflow用户

发布于 2008-09-16 17:29:41

Eruby是一个外部可执行文件,而erb是Ruby中的一个库。如果您希望独立处理模板文件(例如,快速替换PHP ),则可以使用前者;如果您需要在其他Ruby脚本的上下文中处理它们,则可以使用后者。使用ERB更常见,仅仅是因为它更灵活,但我承认,我曾经涉足eruby,为快速的小实用网站执行.rhtml文件。

票数 2
EN

Stack Overflow用户

发布于 2008-09-17 09:51:39

我正在使用erb做类似的事情,性能对我来说很好。

然而,正如乔迪所说,这取决于你想要在什么上下文中运行-如果你真的要使用你列出的模板,eruby可能会工作得更好,但我猜你实际上会将变量传递给模板,在这种情况下,你需要erb。

仅供参考,当使用erb时,您需要将想要从中获取变量的对象的绑定传递给它,如下所示:

代码语言:javascript
复制
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)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74782

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档