Rake es una herramienta de automatización de compilación y administración de tareas de software creada por Jim Weirich . Permite al usuario especificar tareas y describir dependencias, así como agrupar tareas en un espacio de nombres. Es similar a SCons y Make . Está escrito en el lenguaje de programación Ruby y los Rakefiles (equivalente a Makefiles en Make) usan la sintaxis Ruby. Rake usa la función anónima de Rubybloques para definir varias tareas, permitiendo el uso de la sintaxis de Ruby. Tiene una biblioteca de tareas comunes: por ejemplo, funciones para realizar tareas comunes de manipulación de archivos y una biblioteca para eliminar archivos compilados (la tarea "limpiar"). Al igual que Make, Rake también puede sintetizar tareas basadas en patrones: por ejemplo, crear automáticamente una tarea de compilación de archivos basada en patrones de nombre de archivo. Rake ahora es parte de la biblioteca estándar de Ruby desde la versión 1.9 en adelante.
Desarrollador (es) | Jim Weirich |
---|---|
Lanzamiento estable | 13.0.3 / 21 de diciembre de 2020 |
Repositorio | |
Escrito en | Rubí |
Sistema operativo | Multiplataforma |
Tipo | Herramientas de desarrollo de software |
Licencia | Licencia MIT |
Sitio web | ruby |
Ejemplo
A continuación se muestra un ejemplo de un script Rake simple para construir un programa C Hello World.
file 'hello.o' => 'hello.c' do sh 'cc -c -o hello.o hello.c' end file 'hello' => 'hola.o' do sh 'cc -o hola hola.o ' fin
Para obtener más ejemplos, consulte la documentación del formato Rakefile .
Reglas
Cuando un archivo se nombra como un requisito previo pero no tiene una tarea de archivo definida para él, Rake intentará sintetizar una tarea mirando una lista de reglas proporcionadas en el Rakefile. Por ejemplo, supongamos que intentamos invocar la tarea "mycode.o" sin tareas definidas para ella. Si el Rakefile tiene una regla similar a esta:
regla '.o' => '.c' hacer | t | sh "cc # { t . source } -c -o # { t . name } " end
Esta regla sintetizará cualquier tarea que termine en ".o". Tiene como requisito previo que exista un archivo fuente con la extensión ".c". Si Rake puede encontrar un archivo llamado "mycode.c", creará automáticamente una tarea que construya "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 de origen coincidente. Esto permite a los usuarios escribir reglas con acciones que hagan referencia al archivo de origen.
Reglas avanzadas
Se puede utilizar cualquier expresión regular como patrón de reglas. Además, se puede utilizar un proceso para calcular el nombre del archivo de origen. 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 . source } -c -o # { t . name } " end
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 se puede utilizar para archivos Java:
rule '.class' => -> ( t_name ) { t_name . sub ( /\.class$/ , '.java' ) . sub ( / ^ clases \ // , 'src /' ) } hacer | t | java_compile ( t . fuente , t . nombre ) fin
A continuación se muestra un ejemplo de una receta de rastrillo simple:
espacio de nombres : pastel de hacer desc 'hacer panqueques' tarea : Crepe => [ : harina , : leche , : huevo , : baking_powder ] no pone "chisporroteo" extremo tarea : manteca de hacer puts "cortan 3 cucharadas de mantequilla en pequeños cuadrados" extremo tarea : harina => : mantequilla no pone "uso manos a plazas de mantequilla de amasar en 1 {{frac | 1 | 2}} taza de harina" extremo tarea : la leche no pone "añadir 1 {{frac | 1 | 4}} taza de leche" tarea final : huevo hacer pone "agregar 1 huevo" tarea final : polvo de hornear hacer pone "agregar 3 {{frac | 1 | 2}} cucharaditas de polvo de hornear" end end
Ver también
enlaces externos
- Documentación de rastrillo
- rake en GitHub
- Usando el lenguaje de compilación Rake de Martin Fowler
- Tutorial de Ruby on Rails Rake en railsenvy.com
- Tareas de rake personalizadas en railscasts.com
- Tutorial de rastrillo en lukaszwrobel.pl