맨위로가기

ERuby

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

eRuby는 `<%`와 `%>` 구분자 안에 루비 코드를 포함하여 웹 템플릿을 동적으로 생성하는 기술이다. 표현식, 실행, 주석 태그를 포함한 다양한 태그를 지원하며, HTML 파일 내에서 루비 코드를 실행하고, PHP와 유사한 방식으로 작동한다. ERB, Erubis, Erubi, Ember 등 여러 구현체가 존재하며, 각각 속도, 기능, 태그 지원 방식에 차이가 있다.

더 읽어볼만한 페이지

  • 루비 (프로그래밍 언어) - 마츠모토 유키히로
    마츠모토 유키히로는 루비 프로그래밍 언어를 창시하고 주요 개발자로 활동하며 MRI, mruby, streem 등 다양한 프로그래밍 언어 및 관련 기술 개발에 기여한 인물로, 오픈소스 소프트웨어 커뮤니티에 대한 공헌과 루비 온 레일즈의 성공으로 세계적인 인정을 받았다.
  • 루비 (프로그래밍 언어) - 루비포지
    루비포지는 루비 센트럴이 운영하며 오픈 소스 루비 언어 관련 홍보를 지원하는 웹사이트였으나, 2014년 5월 15일에 서비스가 종료되었다.
  • 자유 라이브러리 - Tk (소프트웨어)
    Tk는 Tcl 스크립팅 언어의 크로스 플랫폼 GUI 툴킷으로, 다양한 플랫폼 이식과 여러 프로그래밍 언어 바인딩을 지원하며 사용자 정의 가능한 위젯들을 제공한다.
  • 자유 라이브러리 - SQLite
    SQLite는 D. 리처드 히프가 설계한 서버리스 구조의 임베디드 SQL 데이터베이스 엔진으로, 별도의 DBMS 없이 프로그램에 통합되어 작동하며 전체 데이터베이스를 단일 파일로 저장하는 특징이 있고, 다양한 운영체제와 환경에서 널리 사용된다.
ERuby - [IT 관련 정보]에 관한 문서
기본 정보
장르템플릿 엔진
라이선스BSD 2-Clause License
프로그래밍 언어Ruby
개발
저장소GitHub 저장소
출시
최신 버전1.0.5
출시일2004년 12월 14일
기타

2. 사용법

eRuby는 <%%> 구분자 쌍 안에 루비 코드를 포함하여 사용할 수 있게 해준다. 이렇게 포함된 코드 블록은 제자리에서 평가되어 그 결과로 대체된다. eRuby는 웹 페이지뿐만 아니라 XML, RSS 피드 등 구조화된 텍스트 파일을 만드는 데에도 사용될 수 있다. eRuby는 템플릿을 기반으로 정적 파일을 동적으로 생성하며, 이 기능은 ERB 라이브러리에서 찾을 수 있다.[2]

과거 Ruby에서 CGI 등을 작성할 때 HTML 부분을 기술하려면 `print` (혹은 `puts`)를 사용해야 했다. 그러나 HTML 태그를 쓸 때마다 `print` 문을 기술하는 것은 매우 번거롭고, 수정 시에도 많은 노력이 필요했다. 또한 이 방식으로는 CGI나 WEB 애플리케이션을 만들 때 프로그래머와 WEB 디자이너의 분리가 어렵고, Dreamweaver 등의 WEB 오서링 툴 이용도 불가능했다.

이러한 문제를 해결하기 위해 고안된 것이 HTML 내장형 처리계인 PHP와 비슷한 문법으로, HTML에 Ruby 문을 내장하는 구현 방식이다. 이것이 바로 eRuby이다. HTML 파일 안에 `<%...%>` (혹은 `<%=...%>`) 기호로 둘러싸인 공간이 있으면, 그 부분을 Ruby 코드로 인식한다. (`<%=...%>`는 `<% print ... %>`의 생략형이다)

```html





eRuby





<% Ruby 코드1 %>



<% Ruby 코드2 %>



<% Ruby 코드3 %>







```

위와 같이 `<%...%>`로 기술된 부분에서 Ruby 명령이 실행 가능하다. 그 외의 장소에서는 일반적인 HTML 문이 표시되며, PHP와 비슷한 기술이 가능하다.

2. 1. 표현식 태그

`<%= %>` 태그는 표현식을 묶는 데 사용된다. 이 태그는 HTML 여는 태그 구분 기호로 시작하고 등호(=)가 뒤따르며, 닫는 태그 구분자로 끝난다. 템플릿이 렌더링될 때 이 코드는 해당 코드 실행 결과로 대체된다. 평가된 결과가 문자열이 아니면 렌더링 전에 문자열로 변환된다. 예를 들면 다음과 같다.

```ruby

require 'erb'

x = 500

template = ERB.new("The value of x is: <%= x %>")

puts template.result(binding)

```

결과는 다음과 같다.

```text

The value of x is: 500

```[1]

HTML 파일 안에서 `<%...%>` (또는 `<%=...%>`, `<%=...%>`는 `<% print ... %>`의 생략형이다) 기호로 둘러싸인 부분은 Ruby 코드가 쓰인 부분으로 인식된다.

```html





eRuby





<% Ruby 코드1 %>



<% Ruby 코드2 %>



<% Ruby 코드3 %>







```

위와 같이 `<%...%>`로 기술된 부분에서 Ruby 명령이 실행 가능하다. 그 외의 부분에서는 일반적인 HTML 문이 표시되며, PHP와 비슷한 기술이 가능하다.

2. 2. 실행 태그

`<% %>` 태그는 루비 코드를 실행하지만, 결과를 출력하지 않는다. 이 태그로 둘러싸인 코드를 스크립틀릿이라고 한다. `<% end %>` 태그는 기능 블록의 끝을 나타낸다.[3]

예시:

```rhtml


    <% 4.times do %>

  • 목록 항목


  • <% end %>



```

위의 예시에서 "목록 항목" 텍스트는 네 번 출력된다. 스크립틀릿은 자체적으로 텍스트를 생성하지 않고, 포함된 문장을 여러 번 실행하게 한다.

HTML 파일 안에 `<%...%>` (혹은 `<%=...%>`, `<%=...%>`는 `<% print ... %>`의 생략형이다) 기호로 둘러싸인 부분은 Ruby 코드로 인식되어 실행된다. 그 외의 부분에서는 일반적인 HTML 문이 표시된다. 이는 PHP와 비슷한 기술 방식이다.

2. 3. 주석 태그

`< %# %>`는 주석을 추가하는 태그이다. 주석 태그의 내용은 출력 시 렌더링되지 않는다.[4] 이러한 태그는 열린 태그 구분 기호, 해시 기호, 닫힌 태그 구분 기호로 시작한다.[4]

```html

<%# ruby code %>

```

이는 Ruby의 주석과 동일하다. `#` 뒤의 모든 Ruby 코드는 무시되며 아무것도 생성하지 않는다.[4]

2. 4. 기타 태그

`#{}`는 문자열 내에서 변수 값을 치환하는 데 사용된다. 이는 Perl, PHP 등에서도 유사하게 사용되는 방식이다.[1]

eRuby에서 줄바꿈은 닫는 태그 구분자 앞에 하이픈(`-`)을 추가하여 억제할 수 있다. 예를 들어 다음과 같다.

```erb

<% 2.times do -%>

<%= @name %>

<% end -%>

```

위 코드에서 `@name`의 값은 같은 줄에 두 번 출력된다.[1][2]

3. 구현체

eRuby는 HTML에 Ruby 문을 내장하는 구현 방식으로, PHP와 비슷하다. 과거 Ruby에서 CGI 등을 작성할 때 HTML 부분을 `print`나 `puts`로 기술해야 했는데, 이는 매우 번거롭고 수정도 어려웠다. 또한 프로그래머와 WEB 디자이너 간 분업이 어렵고, Dreamweaver 같은 WEB 오서링 툴 사용도 불가능했다. 이러한 문제를 해결하고자 eRuby가 고안되었다.

eRuby는 다양한 구현체가 존재한다.


  • ERB: 루비 표준 라이브러리이다.
  • [https://github.com/kwatch/erubis Erubis]: ERB보다 빠르며, Ruby on Rails 5.0까지 채용되었다.
  • [https://github.com/jeremyevans/erubi Erubi]: Erubis보다 빠르며, Ruby on Rails 5.1 이후 채용되었다.[8]

3. 1. ERB

'''ERB'''는 루비 프로그래밍 언어로 작성되어 루비 표준 라이브러리에 포함된 eRuby의 구현체이다.[5]

ERB 객체를 사용하여 코드 조각을 실행하여 템플릿을 생성할 수 있다. 다음은 간단한 예시이다.

```ruby

require 'erb'

x = 400

simple_template = "x의 값은: <%= x %>."

renderer = ERB.new(simple_template)

puts output = renderer.result(binding)

```

결과는 "x의 값은: 400" 이다.

위의 코드는 x 변수가 선언되기 전에 템플릿을 정의해도 정상적으로 작동한다. 이는 ERB 객체를 사용하는 주된 이유 중 하나로, 주어진 시점에 존재하지 않을 수 있는 변수와 메서드를 ''바인딩''하여 템플릿을 미리 작성할 수 있기 때문이다. 템플릿은 ERB 객체에서 `result`가 호출될 때만 처리된다.

ERB는 객체의 인스턴스 메서드 및 인스턴스 변수에 접근하기 위해 ''binding'' 객체를 사용한다. 클래스의 메서드 내에서 메서드와 변수에 접근하는 것은 쉽지만, 다른 클래스의 변수에 접근하려면 해당 클래스가 공개 메서드를 통해 바인딩 객체를 노출해야 한다.[5][3]

Ruby의 표준 첨부 라이브러리인 ERB 외에도, 다른 ERB 구현이 존재한다.

  • [https://github.com/kwatch/erubis Erubis]: ERB보다 빠른 속도를 특징으로 한다. Ruby on Rails 5.0까지 채용되었다.
  • [https://github.com/jeremyevans/erubi Erubi]: Erubis보다 빠른 속도를 특징으로 한다. Ruby on Rails 5.1 이후 채용되었다.[8]

3. 1. 1. ERB.new() 메서드

`ERB.new(template, trim_mode=nil, eoutvar='_erbout')` 형태로 사용한다.

  • `trim_mode`: 줄바꿈 및 공백 문자 처리 방식을 지정한다.[2][3]
  • `eoutvar`: 출력 버퍼 변수명을 지정한다.


`ERB.new` 메서드는 추가적으로 두 개의 매개변수를 더 받을 수 있다.

두 번째 매개변수는 안전 수준을 지정하며, 숫자(최대값 = 4)를 지정하여 템플릿을 다른 스레드에서 실행할 수 있도록 한다. 숫자의 값은 안전 수준을 결정하며, 최대 격리 수준에서는 바인딩 객체가 신뢰할 수 있는 것으로 표시되지 않으면 ERB가 이를 사용할 수 없다.[2][3]

세 번째 매개변수는 선택적 수정자로, 출력에 줄 바꿈을 추가하는 것을 제어하는 데 사용될 수 있다. 예를 들어, ERB가 태그 끝 다음에 줄 바꿈을 출력하지 않도록 하려면 다음과 같이 ERB 객체를 생성할 수 있다.[2][3]

```ruby

renderer = ERB.new(template, 3, '>')

```

세 번째 매개변수만 제공하고 두 번째 매개변수를 무시하려면 두 번째 매개변수의 입력으로 0을 사용한다.

3. 1. 2. 명령줄에서 ERB 실행

erb는 템플릿을 생성하는 데 사용되며, 웹 페이지나 기타 텍스트 파일을 만드는 데 자주 쓰인다. 일반적으로 erb의 출력물은 사용자가 원하는 파일로 보내야 한다. 이를 위해 명령줄에서 제공하는 리디렉션 기능을 사용하여 표준 출력 대신 파일로 리디렉션할 수 있다.[2]

```sh

erb sample1.erb.txt > my_view.html.erb

```

위 예에서 출력은 ''my_view.html.erb'' 파일로 리디렉션된다.

타사 라이브러리를 연결하려면 -r 옵션과 함께 라이브러리 이름을 지정하면 된다. 이 기능은 루비 키워드 ''[http://apidock.com/ruby/Kernel/require require]''와 동일한 기능을 수행하므로 이를 기억하면 도움이 된다. 아래 예에서는 [http://ruby-doc.org/stdlib-1.9.3/libdoc/ipaddr/rdoc/IPAddr.html IPAddr] 라이브러리를 사용한다.

```sh

erb -r IPAddr sample1.txt.erb > my_view.html.erb

```

이전 섹션에서 언급한 ''안전 수준''은 -S 옵션을 사용하여 명령줄 인수로 지정할 수 있다.[2]

```sh

erb -S 4 sample1.erb.txt > my_view.html.erb

3. 2. Erubis

Erubis는 ERB보다 빠른 eRuby 구현체이다. Ruby on Rails 5.0까지 채택되었다.[8] 유효한 XML을 허용하는 대체 태그를 지원한다.

3. 3. Erubi

Erubis보다 빠른 eRuby 구현체이다. Ruby on Rails 5.1 이후 채택되었다[8].

3. 4. Ember

리눅스용 eRuby의 순수 루비 구현체이다. eRuby 템플릿의 디버깅을 허용하고, 구성 가능성을 개선하며, 강력한 속기 eRuby 지시어를 제공한다.[1]

4. 구현체별 태그 비교

다음 표는 위에 언급된 각 구현에서 사용 가능한 태그를 비교한 것이다.[3][6][7]

구현단순 표현 태그
<%= %>
단순 실행 태그
<% %>
단순 주석 태그
<%# %>
태그 패턴 구성 능력태그를 위한 간편 표기법<%~ %><%+ %><%< ><%>>
erb, <%xy%>%xy로 작성될 수 있다.
erubis, 태그 패턴을 무엇이든 변경할 수 있다., 태그 패턴을 변경할 수 있다.
ember, <%xy%>%xy로 작성될 수 있다.태그의 내용은 eRuby 템플릿으로 평가된다.태그의 내용은 Ruby 코드로 평가되며 읽고, 평가하고, 렌더링되는 Ruby 템플릿 파일을 가리키는 경로로 예상된다.<%+ %>와 동일하지만 파일 내용은 단순히 출력에 렌더링된다.포함된 코드를 Ruby 코드 블록으로 처리하고 (필요한 경우) 태그 본문에 do 키워드를 추가한다.


참조

[1] 서적 Ruby Best Practices https://archive.org/[...] O'Reilly
[2] 웹사이트 An Introduction to ERB Templating http://www.stuartell[...] 2016-07-01
[3] 웹사이트 ERB http://ruby-doc.org/[...] 2015-02-23
[4] 웹사이트 ERB – Ruby Templating http://apidock.com/r[...] 2016
[5] 서적 Agile Web Development with Rails The Pragmatic Programmers
[6] 웹사이트 ember(1) http://snk.tuxfamily[...] 2011-06-29
[7] 웹사이트 Erubis http://www.kuwata-la[...] 2011
[8] 웹사이트 Ruby on Rails 5.1リリースノート https://railsguides.[...] 2018-06-16
[9] 서적 Ruby Best Practices https://archive.org/[...] O'Reilly



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com