stringtranslate.com

rubí electrónico

Ruby embebido (también abreviado como ERB ) es un sistema de plantillas que integra Ruby en un documento de texto. Se utiliza a menudo para integrar código Ruby en un documento HTML , de forma similar a ASP y JSP , y PHP y otros lenguajes de programación del lado del servidor. El sistema de plantillas de eRuby combina código Ruby y texto sin formato para proporcionar control de flujo y sustitución de variables, lo que hace que el código combinado sea más fácil de mantener. [1]

El módulo View de Ruby on Rails es responsable de mostrar la respuesta o salida en un navegador. En su forma más simple, una vista puede ser un fragmento de código HTML que tiene algún contenido estático. Para la mayoría de las aplicaciones, tener solo contenido estático puede no ser suficiente. Muchas aplicaciones Ruby on Rails requerirán que el contenido dinámico creado por el controlador (método de acción) se muestre en su vista. Esto es posible mediante el uso de Ruby embebido para generar plantillas que pueden contener contenido dinámico. Ruby embebido permite que el código Ruby se incruste en un documento de vista. Este código se reemplaza con el valor adecuado resultante de la ejecución del código en tiempo de ejecución. Pero, al tener la capacidad de incrustar código en un documento de vista, corremos el riesgo de superar la clara separación presente en el marco MVC . Por lo tanto, es responsabilidad del desarrollador asegurarse de que exista una clara separación de responsabilidades entre los módulos de modelo, vista y controlador de su aplicación. [2]

Uso

eRuby permite que el código Ruby se incruste dentro de un par de delimitadores<% y . Estos bloques de código incrustados se evalúan en el lugar (se reemplazan por el resultado de su evaluación). Además de crear páginas web, eRuby también se puede utilizar para crear documentos XML , feeds RSS y otras formas de archivos de texto estructurados. eRuby genera archivos estáticos de forma dinámica basados ​​en plantillas . Estas funcionalidades de eRuby se pueden encontrar en la biblioteca ERB.%>

Los diferentes tipos de marcadores de etiquetas utilizados en las plantillas ERB son:

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

Etiquetas de expresión

<%= %> : Esto indica que la etiqueta encierra una expresión. Dicha etiqueta comienza con un delimitador de etiqueta de apertura seguido de un símbolo 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 en una cadena antes de ser representado. Por ejemplo:

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

El texto resultante se ve así: El valor de x es: 500 [1]

Etiquetas de ejecución

<% %> : El código incluido en dichas etiquetas se denomina scriptlet . El código incluido en dichas etiquetas se ejecuta y su resultado se reemplaza en lugar del scriptlet. Dichas etiquetas deben tener una etiqueta coincidente para indicar el final de un bloque funcional. Por ejemplo: [4]<% end %>

< ul > <% 4 . veces hacer %>    < li > elemento de lista </ ​​li ><% fin %> </ ul >  

En el ejemplo anterior, el elemento de lista de texto se imprime cuatro veces. El scriptlet no produce texto por sí mismo, solo hace que la declaración adjunta se ejecute varias veces. El resultado del código anterior:

Etiquetas de comentarios

<%# %> :El contenido de las etiquetas de comentarios no se muestra en la salida. Dichas 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. A continuación se muestra un ejemplo de una etiqueta de comentario: [5]

<%# código ruby ​​%>

Esto es lo mismo que un comentario en Ruby. Todo el código Ruby después del signo # se ignora y no genera nada.

Otras etiquetas

Otras cosas comunes en eRuby son simplemente comunes 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 del delimitador de la etiqueta de cierre. Por ejemplo:

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

En la salida del código anterior, el valor del nombre se imprime dos veces en la misma línea. [1] [3]

Implementaciones

Existen varias implementaciones de eRuby, a saber:

  1. Banco de Reserva E.
  2. erubis
  3. ascua

erb

erb es una implementación de eRuby escrita puramente 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 con el objeto ERB. A continuación se muestra un ejemplo sencillo:

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

El resultado se ve así: El valor de x es: 400

Lo mismo se puede lograr utilizando el código siguiente que no utiliza un objeto ERB:

x = 400 string = "El valor de x es: #{ x } " pone string     

Ambos fragmentos de código anteriores generan el mismo resultado. Pero, ¿qué sucede cuando intercambiamos las líneas 2 con la 3 en el primer fragmento de código y la línea 1 con la 2 en el segundo? El primer fragmento de código cambia al código que se muestra a continuación:

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

Esto todavía genera la misma salida, es decir, el valor de x es: 400.

El segundo fragmento de código cambia al código siguiente:

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

El código anterior no se ejecutará. Esto se debe a que la primera línea no conoce el valor de x cuando se ejecuta. Por lo tanto, la razón principal para usar un objeto ERB es escribir plantillas con anticipación, vinculando variables y métodos que pueden no existir en un momento dado. La plantilla se procesa solo cuando se llama a result en el objeto ERB. Para obtener acceso a los métodos de instancia y la variable de instancia de un objeto, ERB hace uso de 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 obtener acceso a los métodos y variables dentro del método de una clase . Pero para acceder a las variables de una clase diferente, esa clase tendrá que exponer su objeto de enlace a través de un método público. El ejemplo es el que se muestra a continuación: [2] [4]

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

Como podemos ver en el ejemplo anterior, estamos exponiendo el objeto de enlace de la clase ERBExample. Además, hemos utilizado el objeto de enlace para acceder a las variables y métodos de la clase dentro de uno de sus métodos.

método new() de ERB

El nuevo método del objeto ERB toma dos parámetros más . El segundo parámetro especifica un nivel de seguridad. Al dar un número en el segundo parámetro (valor máximo = 4) se puede hacer que la plantilla se ejecute en un subproceso diferente . El valor del número determina el nivel de seguridad. En el nivel de aislamiento máximo, a menos que el objeto de enlace esté marcado como confiable, ERB no puede usarlo. El tercer parámetro especifica modificadores opcionales. Estos se pueden usar para controlar la adición de nuevas líneas a la salida. Por ejemplo, para asegurarnos de que ERB no muestre nuevas líneas después de que finalice la etiqueta, podemos crear el objeto ERB como se muestra a continuación [3] [4]

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

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

ERB tiene muchos otros métodos expuestos que se pueden usar para representar una plantilla. Para obtener una lista completa de las API expuestas por el objeto ERB, consulte la documentación de ERB que se incluye en la sección de referencia.

Ejecutar ERB desde la línea de comandos

Como ya se ha explicado en las secciones anteriores, el comando erb se utiliza para generar plantillas. Esto se suele utilizar para generar páginas web u otros archivos de texto. Normalmente, se necesita que erb envíe la salida al archivo deseado. Para lograrlo, podemos utilizar la capacidad de redirección proporcionada en la línea de comandos y redirigir la salida a un archivo en lugar de imprimirla en la salida estándar. [3]

erb  sample1.erb.txt  >  mi_vista.html.erb

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

La vinculación de bibliotecas de terceros se puede lograr utilizando la opción -r y proporcionando el nombre de la biblioteca. Para recordar esta funcionalidad, se puede recordar la palabra clave de Ruby require , que realiza la misma función que la opción -r. El siguiente ejemplo utiliza la biblioteca IPAddr.

erb  -r  direcciónIP  sample1.txt.erb  >  mi_vista.html.erb

Como hemos mencionado sobre los niveles de seguridad en la sección anterior, uno puede especificar el nivel de seguridad como un argumento de línea de comando usando la opción -S [3]

erb  -S 4 muestra1.erb.txt > mi_vista.html.erb    

erubis

erubis es una implementación de eRuby implementada en Ruby y también en Java . Según su página de inicio, se ejecuta más rápido que eRuby y ERb y tiene varias opciones útiles, incluidas etiquetas alternativas que permiten XML válido .

ascua

ember es una implementación pura de Ruby de eRuby para Linux . Permite la depuración de plantillas de eRuby, mejora su capacidad de composición y proporciona directivas abreviadas de eRuby.

Comparación de diferentes etiquetas de implementación

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

Véase también

Referencias

  1. ^ abc Brown, Gregory (2009). Mejores prácticas de Ruby . O'Reilly. págs. 279-281. ISBN. 978-0596523008.
  2. ^ abc 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. ^ abcde Ellis, Stuart (1 de julio de 2016). "An Introduction to ERB Templating" (Introducción a las plantillas ERB) . Consultado el 12 de septiembre de 2016 .
  4. ^ abcd "ERB". 23 de febrero de 2015. Consultado el 12 de septiembre de 2016 .
  5. ^ "ERB – Ruby Templating". 2016. Consultado el 12 de septiembre de 2016 .
  6. ^ "ember(1)". 29 de junio de 2011. Consultado el 12 de septiembre de 2016 .
  7. ^ "Erubis". 2011. Archivado desde el original el 27 de marzo de 2017. Consultado el 12 de septiembre de 2016 .

Enlaces externos