5

erby と 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
4

3 に答える 3

9

関係ないけど、どっちも同じ。erb は純粋な ruby​​ ですが、eruby は C で書かれているため、少し高速です。

erubis (3 番目のもの) は純粋な Ruby であり、上記の両方よりも高速です。しかし、その速度がボトルネックになるとは思えないので、erb を使用してください。Ruby 標準ライブラリの一部です。

于 2008-09-16T17:27:51.640 に答える
2

Eruby は外部実行可能ファイルですが、erb は Ruby 内のライブラリです。テンプレートファイルを独立して処理したい場合は前者を使用し (例: PHP の簡単な置き換え)、他の Ruby スクリプトのコンテキスト内で処理する必要がある場合は後者を使用します。.rhtmlERB の方が柔軟性が高いという理由だけで ERB を使用する方が一般的ですが、簡単で小さなユーティリティ Web サイトのファイルを実行するために eruby に手を出してしまったことを認めます。

于 2008-09-16T17:29:41.213 に答える
0

私は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)
于 2008-09-17T09:51:39.013 に答える