ruby rake thor

ruby - Rake vs. Thor para scripts de automatización?



(4)

Quiero automatizar cosas como:

  • Al crear una nueva aplicación Ruby on Rails con una base de datos preseleccionada, Git la inicializa, crea un proyecto Heroku , confirma todos los archivos, etc.
  • Cargue todos los archivos en la carpeta a otra computadora a través de SSH, pero no sobrescriba los archivos.
  • Actualice Ubuntu, instale todos los paquetes básicos a través de apt-get.

Por lo que entiendo, las herramientas para esto son Rake y Thor, sin embargo, ¿cuál debo usar?

Rake me parece más de facto y popular. He oído a gente recomendar a Thor.

¿Cómo se diferencian estos en un resumen?


Hay algo importante que mencionar aquí.

http://guides.rubyonrails.org/generators.html en su sección 8 Plantillas de aplicaciones.

Puede ejecutar comandos git, seleccionar gemas, capificar proyecto.

Y también podría ejecutar comandos del sistema para satisfacer su último punto: Upgrade Ubuntu, install all basic packages through apt-get .


Para configurar las tareas de Ubuntu, Chef podría ser una mejor opción.

Desde su sitio web:

Chef es un marco de integración de sistemas de código abierto, creado para llevar los beneficios de la administración de la configuración del servidor a toda su infraestructura.

Está escrito en Ruby y hay toneladas de recetas de cocina / libros de cocina. Chef se encargará de configurar Ubuntu e instalar paquetes, servidores, etc.

No sé si está trabajando con máquinas virtuales, pero Vagrant configurará una máquina virtual y luego usará Chef para configurarla.


Rake y Thor sirven para diferentes propósitos.

Rake es una herramienta de script de compilación general que es específica de un proyecto. En otras palabras, coloca su archivo de búsqueda en la carpeta del proyecto y en el control de origen de su proyecto, y puede crear, crear y realizar otras tareas de automatización que sean específicas de su proyecto en ese archivo de búsqueda. Rake requiere un rakefile para correr.

Thor es una herramienta de scripting de línea de comando de propósito general que hace que sea muy fácil reutilizar scripts en muchos proyectos y realizar la configuración del proyecto, etc., como usted sugiere. Thor le permite "instalar" un script ejecutable al que puede llamar desde cualquier lugar de su sistema, similar a llamar a las líneas de comando " ruby ", " gem " o " rake ". Sin embargo, los scripts de Thor son más apropiados para la automatización de aplicaciones cruzadas y de propósito general porque el script Thor no depende de un archivo ubicado en la carpeta específica de su proyecto. Una secuencia de comandos Thor es la secuencia de comandos completa, empaquetada e instalada para su reutilización en cualquier lugar.

En función de sus necesidades declaradas, es mejor que use Thor porque podrá instalar su script en una ubicación y hacer que funcione en cualquier lugar de su sistema. No se lo vinculará a un lugar donde se encuentra un archivo Rake ni nada por el estilo.

Por cierto, Rails 3 usa Thor para casi todo lo que no es específico de un proyecto. Aún tiene un archivo Rake y todavía ejecuta cosas como " rake db:migrate " o " rake test:units ". Thor se usa para cosas como " rails new ... ", " rails server " y " rails generate ... " El uso de Thor AND Rake in Rails 3 es la ilustración perfecta de dónde se adapta mejor cada una de estas herramientas.


Yo iría con puppet .

Por cierto, ¿quizás vagrant es útil para ti?