【问题标题】:Which to use, eruby or erb?使用哪个,eruby 还是 erb?
【发布时间】:2008-09-16 17:24:28
【问题描述】:

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

【问题讨论】:

    标签: ruby erb eruby


    【解决方案1】:

    没关系,它们都是一样的。 erb 是纯 ruby​​,eruby 是用 C 编写的,所以速度有点快。

    erubis(第三个)是纯红宝石,比上面列出的两个都快。但我怀疑它的速度是你的瓶颈,所以只需使用 erb。它是 Ruby 标准库的一部分。

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

        我正在使用 erb 做类似的事情,性能对我来说还不错。

        正如 Jordi 所说,这取决于您要在什么环境中运行它 - 如果您真的要使用您列出的模板,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)
        

        【讨论】:

          猜你喜欢
          • 2011-06-08
          • 1970-01-01
          • 1970-01-01
          • 2011-05-27
          • 1970-01-01
          • 2014-08-25
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多