Articulo de referencia

eRuby

Ruby incrustado (abreviado como ERB o eRuby ) es un motor de plantillas que incrusta código Ruby en documentos de texto . Se usa comúnmente para generar contenido dinámico en do...

Ruby incrustado (abreviado como ERB o eRuby ) es un motor de plantillas que incrusta código Ruby en documentos de texto . Se usa comúnmente para generar contenido dinámico en documentos HTML , una función similar a la de Active Server Pages , JavaServer Pages , PHP y otros lenguajes de scripting del lado del servidor . eRuby combina código Ruby y texto plano para proporcionar control de flujo y sustitución de variables, lo que facilita el mantenimiento del código combinado. [ 1 ]

En Ruby on Rails , eRuby se usa comúnmente en la capa de vista para generar contenido web dinámico. El módulo de vista de Ruby on Rails se encarga de mostrar una respuesta o salida en el navegador . En su forma más simple, una vista puede consistir en contenido HTML estático ; sin embargo, muchas aplicaciones Ruby on Rails requieren que el controlador (un método de acción) muestre contenido dinámico en su vista. Esto se logra mediante plantillas Ruby incrustadas, que permiten insertar código Ruby dentro de los documentos de vista.

Durante la renderización, el código incrustado se evalúa y se reemplaza con su valor resultante en tiempo de ejecución . Sin embargo, la capacidad de incrustar código en un documento de vista conlleva el riesgo de que se pierda la clara separación presente en el marco MVC . En consecuencia, mantener una clara separación de responsabilidades entre los módulos de modelo, vista y controlador queda a cargo del desarrollador de la aplicación. [ 2 ]

Uso

eRuby inserta código Ruby entre dos delimitadores<% `<p>` y ` <span>`, que luego se evalúan directamente. Además de crear páginas web, eRuby también se puede usar para crear documentos XML , fuentes RSS y otros tipos de archivos de texto estructurados. Asimismo, eRuby genera dinámicamente archivos estáticos a partir de plantillas . Estas funcionalidades de eRuby se encuentran en la biblioteca ERB.%>

En las plantillas ERB se utilizan diferentes tipos de marcadores de etiquetas:

  1. Etiquetas de expresión
  2. Etiquetas de ejecución
  3. Etiquetas de comentarios [ 3 ]

Etiquetas de expresión

El delimitador indica que la etiqueta encierra una expresión. Dicha etiqueta comienza con un delimitador de etiqueta de apertura seguido de un símbolo de igual a y termina con un delimitador de etiqueta de cierre . Durante la representación de la plantilla , este fragmento de código se sustituye por el resultado del código. Si el resultado evaluado no es una cadena, se convierte a cadena antes de su representación. [ 1 ]<%=%>

require 'erb' x = 500 template = ERB . new ( "El valor de x es: <%= x %>" ) puts template . result ( binding ) <% # Salida: El valor de x es: 500 %>

Etiquetas de ejecución

Las etiquetas de ejecución se definen mediante y el código encerrado entre dichas etiquetas se denomina scriptlet . El código de la etiqueta correspondiente se ejecuta y su resultado reemplaza al scriptlet. Estas etiquetas requieren una etiqueta coincidente para indicar el final de un bloque funcional. La siguiente plantilla ERB genera un elemento de lista HTML cuatro veces: [ 4 ]<%%><%end%>

<ul> < % 4.times do % >< li > elemento de la lista </ ​​li ><% end %> </ ul >

El resultado es el siguiente:

<li> elemento de la lista </li> <li> elemento de la lista </li> <li> elemento de la lista </li> <li> elemento de la lista </li>

Como se muestra en la salida, el elemento de la lista de texto se imprime cuatro veces. El script no genera ningún texto por sí mismo; solo hace que la instrucción incluida se ejecute varias veces.

Etiquetas de comentarios

Los comentarios se definen con la etiqueta y no se muestran en la salida. Estas etiquetas comienzan con un delimitador de etiqueta de apertura seguido de un símbolo de almohadilla y terminan con un delimitador de etiqueta de cierre. El siguiente es un ejemplo de una etiqueta de comentario: [ 5 ]<%#%>

<%# código rubí %>

Ruby utiliza las mismas etiquetas de comentarios que eRuby, y todo el código posterior #se ignora, por lo que no se genera nada.

Otras etiquetas

Hay otras etiquetas comunes tanto en eRuby como en Ruby, como la sustitución de cadenas con #{string_name}, que es similar en lenguajes como Perl o PHP .

En eRuby, los saltos de línea se pueden suprimir añadiendo un guion al principio de un delimitador de etiqueta de cierre.

El siguiente es un ejemplo del valor de @nameimprimir dos veces en la misma línea: [ 1 ] [ 3 ]

<% 2 . veces hacer -%> <%= @nombre %> <% fin -%>

Implementaciones

Existen varias implementaciones de eRuby:

  1. ERB
  2. erubis
  3. ascua

hierba

erb es una implementación de eRuby escrita completamente en el lenguaje de programación Ruby e incluida en la biblioteca estándar de Ruby. [ 2 ]

Se puede generar una plantilla ejecutando un fragmento de código escrito utilizando el objeto ERB. Un ejemplo sencillo es el siguiente:

require 'erb' x = 400 simple_template = "Valor de x es: es <%= x %>." renderer = ERB . new ( simple_template ) puts output = renderer . result ( binding ) <% # Salida: Valor de x es: 400 %>

Este enfoque difiere de la interpolación de cadenas , que produce la salida inmediatamente cuando se construye la cadena:

x = 400 cadena = "El valor de x es: #{ x } " puts cadena

Sin embargo, construir la cadena antes de que se defina la primera variable impide que el código se ejecute:

cadena = "El valor de x es: #{ x } " x = 400 puts cadena

Por lo tanto, la razón principal para usar un objeto ERB es escribir plantillas con anticipación, vinculando variables y métodos que podrían no existir en un momento dado. La plantilla se procesa solo cuando se llama al método `result` del objeto ERB. Para acceder a los métodos y variables de instancia de un objeto, ERB utiliza un objeto de enlace .

El acceso a las variables y métodos de un objeto se proporciona mediante el objeto de enlace privado que existe en cada clase Ruby. Es fácil acceder a los métodos y variables dentro del método de una clase ; sin embargo, para acceder a las variables de una clase diferente, la clase deberá exponer su objeto de enlace a través de un método público. Un ejemplo es el siguiente: [ 2 ] [ 4 ]

clase ERBExample attr_accessor :variable1 # usando bind para acceder a las variables de clase def render () renderer . result ( binding ) enddef inicializar ( variable1 ) @variable1 = variable1 fin# Exponer el método privado binding(). def get_binding binding () end endejemplo = ERBexample.new ( variable1 ) renderizador = ERB.new ( plantilla ) puts salida = renderizador.resultado ( ejemplo.get_binding )

Como se muestra, el objeto de enlace de la clase ERBExamplequeda expuesto. Además, este objeto se utiliza para acceder a las variables y métodos de la clase dentro de uno de sus métodos.

new()método de ERB

El nuevo método del objeto ERB toma dos parámetros más . El primer parámetro especifica la plantilla, y el segundo un nivel de seguridad que hace que la plantilla se ejecute en un hilo diferente . Con el nivel de seguridad máximo de cuatro, ERB no puede usar un objeto de enlace a menos que esté marcado como confiable. El tercer parámetro especifica modificadores opcionales, que se pueden usar para controlar la adición de saltos de línea a la salida. Por ejemplo, para asegurar que ERB no genere saltos de línea después de los finales de etiqueta, se puede crear un objeto ERB como se muestra a continuación: [ 3 ] [ 4 ]

renderizador = ERB.new ( plantilla , 3 , ' > ' )

Para proporcionar únicamente el tercer parámetro e ignorar el segundo, utilice 0 como entrada para el segundo parámetro.

ERB dispone de muchos otros métodos que pueden utilizarse para renderizar una plantilla. En la documentación de ERB se incluye una lista completa de las API que ofrece el objeto ERB .

Ejecutar ERB desde la línea de comandos

El comando ` erb` permite procesar plantillas ERB desde la terminal. Lee un archivo de plantilla, evalúa el código Ruby incrustado e imprime el resultado en la salida. Se puede usar la redirección de salida para escribir el resultado en un archivo en lugar de imprimirlo en la salida estándar. [ 3 ]

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

En el ejemplo anterior, la salida se redirige al archivo my_view.html.erb .

Se pueden cargar bibliotecas adicionales de terceros utilizando la -ropción seguida del nombre de la biblioteca, que es similar a la palabra clave require.

El siguiente ejemplo utiliza la biblioteca IPAddr :

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

Para especificar los niveles de seguridad, se puede pasar un número como argumento de línea de comandos usando la -Sopción: [ 3 ]

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

erubis

erubis es una implementación de eRuby implementada en Ruby y Java . Se ejecuta más rápido que eRuby y ERb y tiene varias opciones útiles, incluidas etiquetas alternativas que permiten XML válido . [ 6 ]

ascua

ember es una implementación pura de Ruby de eRuby para Linux . Permite depurar plantillas de eRuby, mejora su capacidad de composición y proporciona directivas abreviadas de eRuby potentes. [ 7 ]

Comparación de diferentes etiquetas de implementación

La siguiente tabla compara las etiquetas disponibles en cada una de las implementaciones anteriores: [ 4 ] [ 7 ] [ 8 ]

Véase también

Referencias

  1. 1 2 3 Brown, Gregory (2009). Ruby Best Practices . O'Reilly. págs. 279–281 . ISBN  978-0596523008.
  2. 1 2 3 S., Ruby; D., Thomas; Hansson D, Heinemeier (2011). Desarrollo web ágil con Rails . The Pragmatic Programmers. pág. 35. ISBN  978-1-934356-54-8.
  3. 1 2 3 4 5 Ellis, Stuart (1 de julio de 2016). "Una introducción a la creación de plantillas ERB" . Recuperado el 12 de septiembre de 2016 .
  4. 1 2 3 4 "ERB" .
  5. "ERB – Ruby Templating" . 2016. Consultado el 12 de septiembre de 2016 .
  6. "erubis | RubyGems.org | tu proveedor de gemas de la comunidad" . rubygems.org . Consultado el 14 de mayo de 2026 .
  7. 1 2 "ember(1)" . 29 de junio de 2011. Recuperado el 12 de septiembre de 2016 .
  8. "Erubis" . 2011. Archivado del original el 27 de marzo de 2017. Consultado el 12 de septiembre de 2016 .
  • Biblioteca ERB
  • "Ruby y la web" , un capítulo de "La guía del programador pragmático".
  • "web-mode.el" , modo principal de Emacs para editar plantillas eRuby
  • ERB – Plantillas Ruby
  • documentación de erb
  • Biblioteca estándar de Ruby
  • Documentación de erubis archivada el 27/03/2017 en Wayback Machine .
  • documentación de Ember