2008-09-16 2 views
4

eruby와 erb의 차이점은 무엇입니까? 어떤 고려 사항으로 인해 하나 또는 둘 중 하나를 선택할 수 있습니까?어느 것이 사용, eruby 또는 erb?

내 응용 프로그램이 네트워크 장치 (라우터,로드 밸런서, 방화벽 등)에 대한 구성 파일을 생성 중입니다. 내 계획은 config 파일을 템플릿으로 만들고, 소스 파일 내에서 임베디드 루비 (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 

, 임베디드 루비 인터프리터를 통해 실행 (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 

답변

9

아무튼 '를 예를 들어,이 같은 설정 템플릿 파일이있을 수 있습니다 정말 중요해. 둘 다 똑같아. erb는 순수한 루비이고 eruby는 C로 작성되어 조금 더 빠릅니다.

erubis (세 번째 것)는 순수한 루비이며 위에 나열된 것보다 빠릅니다. 하지만 그 속도가 당신에게 병목이 될지 의심 스럽습니다. 그래서 erb를 사용하십시오. 그것은 Ruby 표준 라이브러리의 일부입니다.

2

erru는 외부 실행 파일이며 erb는 Ruby 내의 라이브러리입니다. 템플리트 파일을 독립적으로 처리하기를 원한다면 (예 : 빠르 고 오염 된 PHP 대체), 다른 루비 스크립트의 컨텍스트 내에서 처리해야한다면 후자를 사용하십시오. 좀 더 유연하기 때문에 ERB를 사용하는 것이 더 일반적이지만, 나는 작은 유틸리티 웹 사이트에 대해 .rhtml 개의 파일을 실행하기 위해 eruby를 도청한다고 유죄를 인정합니다.

0

나는 erb를 사용하여 비슷한 것을하고 있으며, 성능은 저에게 좋습니다.

조르디가 말했듯이, 당신이 이것을 실행하기를 원하는 문맥에 달려 있습니다. 만약 당신이 글자 그대로 템플릿을 사용한다면 eruby는 아마도 더 잘 작동 할 것입니다.하지만 실제로는 템플리트에 변수를 전달하면 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) 
: ERB를 사용하는 경우

그냥 참조를 위해, 당신은이 같은 뭔가를 변수를 수행 할 개체에 대한 바인딩을 통과해야합니다

관련 문제