2010-08-19 16 views
43

quiero para automatizar cosas como:Rake vs. Thor para scripts de automatización?

  • Creación de un nuevo Ruby on Rails aplicación con la base de datos de pre-seleccionado, Git inicializarlo, cree un proyecto Heroku, comprometerse todos los archivos, etc.
  • Subir todos los archivos de carpeta a otra computadora a través de SSH, pero no sobrescribe los archivos.
  • Actualiza Ubuntu, instala 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 entre sí en un resumen?

+1

Aunque la respuesta de @ derick-bailey es una gran explicación de Rake vs. Thor, probablemente deberías buscar una herramienta de administración de configuración como Chef o títere para la mayoría de las tareas de instalación del sistema (Actualizar ubuntu, instalar paquetes, ect). También debería mirar a Capistrano para desplegar su aplicación de rieles. El rastrillo no es la mejor herramienta para todas estas tareas – edhurtig

Respuesta

95

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 comandos 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 utilice Thor porque podrá instalar su secuencia de comandos en un solo lugar 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 utiliza para cosas como "rails new ...", "rails server" y "rails generate ..." El uso de Thor AND Rake in Rails 3 es la ilustración perfecta del lugar donde cada una de estas herramientas se adapta mejor.

+1

¡Excelente explicación! Deseé que esto estuviera en algún blog o en la página principal de Thor =) ¿El comando "rails" es un guión Thor o usa Thor de alguna manera? –

+4

gracias. :) el comando "carriles" es un guión thor –

+2

Es una buena respuesta, pero la respuesta de @Tom Corbin es de alguna manera mejor. La respuesta elegida es la mejor evaluación del uso de Thor vs. Rake, pero en realidad, el OP debe usar un administrador de configuración como Chef para realizar la mayor parte de * lo que dicen. (* para el resto, Thor es mejor que Rake.) –

13

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

De su sitio web:

chef es un marco de integración de sistemas de código abierto, construido para llevar los beneficios de la gestión de configuración del servidor para toda su infraestructura.

Está escrito en Ruby y hay toneladas de Recetas de chef/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.

+0

Sé que esta es la respuesta viejo, pero ahora, ¡cualquiera que venga aquí también querrá echar un vistazo a Docker! – bkunzi01

+0

Itamae (un chef ligero; https://github.com/itamae-kitchen/itamae) + Docker es uno de elección. Estoy contento con esto para ese tipo de situación de aprovisionamiento de máquina virtual + (aunque itamae + docker tiene algunos problemas, itamae ssh + docker sshd es una solución alternativa) –

0

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.

Cuestiones relacionadas