stringtranslate.com

Rastrillo (software)

Rake es una herramienta de automatización de compilación y gestión de tareas de software creada por Jim Weirich . Permite al usuario especificar tareas y describir dependencias, así como agrupar tareas en espacios de nombres. Es similar a SCons y Make . Rake fue escrito en Ruby y ha sido parte de la biblioteca estándar de Ruby desde la versión 1.9. [2] [3]

Ejemplos

Las tareas que deben ejecutarse deben definirse en un archivo de configuración llamado Rakefile. Un Rakefile no tiene una sintaxis especial y contiene código Ruby ejecutable. [4]

Tareas

La unidad básica en Rake es la tarea. Una tarea tiene un nombre y un bloque de acción que define su funcionalidad. El siguiente código define una tarea llamada saludo que generará el texto "¡Hola, Rake!" a la consola. [5]

tarea : saludar hacer pone "¡Hola, Rake!" fin    

Al definir una tarea, opcionalmente puede agregar dependencias, es decir, una tarea puede depender de la finalización exitosa de otra tarea. Al llamar a la tarea "semilla" del siguiente ejemplo, primero se ejecutará la tarea "migrar" y solo luego se procederá con la ejecución de la tarea "semilla". [5]

tarea :seed => :migrate do # Esta tarea se ejecutará después de que finalice la tarea :migrate     

Las tareas también se pueden hacer más versátiles aceptando argumentos. Por ejemplo, la tarea "generate_report" tomará una fecha como argumento. Si no se proporciona ningún argumento, se utiliza la fecha actual. [5]

tarea :generar_report , [ :fecha ] hacer | t , argumentos | fecha_informe = argumentos [ :fecha ] || Fecha . hoy # Generar el informe basado en la fecha de finalización especificada           

Un tipo especial de tarea es la tarea de archivo, que se puede utilizar para especificar tareas de creación de archivos. A la siguiente tarea, por ejemplo, se le asignan dos archivos objeto, es decir, "ao" y "bo", para crear un programa ejecutable. [6]

archivo "prog" => [ "ao" , "bo" ] hacer | t | sh "cc -o #{ t . nombre } #{ t . requisitos previos . unirse ( ' ' ) } " fin         

Otra herramienta útil es el método de conveniencia del directorio, que se puede utilizar para crear directorios a pedido. [7]

directorio "datos de prueba/ejemplos/doc" 

Normas

Cuando un archivo se nombra como requisito previo pero no tiene una tarea de archivo definida para él, Rake intentará sintetizar una tarea mirando una lista de reglas proporcionadas en Rakefile. Por ejemplo, supongamos que intentáramos invocar la tarea "mycode.o" sin ninguna tarea definida para ella. Si el Rakefile tiene una regla similar a esta:

regla '.o' => '.c' hacer | t | sh "cc #{ t . fuente } -c -o #{ t . nombre } " fin       

Esta regla sintetizará cualquier tarea que termine en ".o". Tiene como requisito previo que debe existir un archivo fuente con extensión ".c". Si Rake puede encontrar un archivo llamado "mycode.c", creará automáticamente una tarea que compila "mycode.o" a partir de "mycode.c". Si el archivo "mycode.c" no existe, Rake intentará sintetizar recursivamente una regla para él.

Cuando una tarea se sintetiza a partir de una regla, el atributo de origen de la tarea se establece en el archivo fuente coincidente. Esto permite a los usuarios escribir reglas con acciones que hacen referencia al archivo fuente. [8]

Reglas avanzadas

Se puede utilizar cualquier expresión regular como patrón de regla. Además, se puede utilizar un proceso para calcular el nombre del archivo fuente. Esto permite patrones y fuentes complejos.

La siguiente regla es equivalente al ejemplo anterior:

regla ( /\.o$/ => -> ( t_name ){ t_name . sub /\.o$/ , '.c' }) hacer | t | sh "cc #{ t . fuente } -c -o #{ t . nombre } " fin          

NOTA: Debido a una peculiaridad en la sintaxis de Ruby, se requieren paréntesis alrededor de una regla cuando el primer argumento es una expresión regular.

La siguiente regla podría usarse para archivos Java: [9]

regla '.class' => -> ( t_name ){ t_name . sub ( /\.class$/ , '.java' ) . sub ( /^clases\// , 'src/' ) } hacer | t | java_compile ( t . fuente , t . nombre ) fin             

Espacios de nombres

Para organizar mejor los Rakefiles grandes, las tareas se pueden agrupar en espacios de nombres. [10] A continuación se muestra un ejemplo de una receta sencilla de rastrillo:

espacio de nombres :cake hacer desc tarea 'hacer panqueques' :pancake => [ :harina , :leche , :egg , :baking_powder ] pone "chisporroteo" finaliza la tarea :butter pone "corta 3 cucharadas de mantequilla en cuadritos pequeños" finaliza la tarea :harina => :mantequilla pone "usa las manos para amasar cuadrados de mantequilla hasta obtener 1 1/2 taza de harina" finaliza la tarea :leche pone "agrega 1 1/4 taza de leche" finaliza la tarea :huevo pone " agrega 1 huevo " final tarea :baking_powder pone "agregar 3 1/2 cucharaditas de polvo para hornear " al final                                            

Ver también

Referencias

  1. ^ "Lanzamiento v13.2.1 · ruby/rake · GitHub". GitHub . 5 de abril de 2024 . Consultado el 21 de junio de 2024 .
  2. ^ "Rastrillo - Ruby Make". y . Consultado el 28 de febrero de 2024 .
  3. ^ "NOTICIAS". nd Archivado desde el original el 4 de marzo de 2016 . Consultado el 29 de febrero de 2024 .
  4. ^ "Formato de archivo Rake". GitHub . Consultado el 21 de junio de 2024 .
  5. ^ abc "Tutorial de Ruby on Rails: comprensión de Rake y la automatización de tareas". 2019-06-10 . Consultado el 21 de junio de 2024 .
  6. ^ "Formato Rakefile # Tareas de archivo". GitHub . Consultado el 21 de junio de 2024 .
  7. ^ "Formato Rakefile # Tareas del directorio". GitHub . Consultado el 21 de junio de 2024 .
  8. ^ "Reglas de número de formato de Rakefile". GitHub . Consultado el 21 de junio de 2024 .
  9. ^ "Formato Rakefile # Reglas avanzadas". GitHub . Consultado el 21 de junio de 2024 .
  10. ^ "Formato Rakefile # espacios de nombres". GitHub . Consultado el 21 de junio de 2024 .

enlaces externos