2010-08-19 4 views
43

Voglio automatizzare le cose come:Rake contro Thor per gli script di automazione?

  • Creazione di un nuovo Ruby on Rails applicazione con il database pre-selezionato, Git inizializzare esso, creare un progetto Heroku, si impegnano tutti i file, ecc
  • Carica tutti i file in cartella su un altro computer tramite SSH, ma non sovrascrivere i file.
  • Aggiornamento di Ubuntu, installare tutti i pacchetti di base tramite apt-get.

Da quello che ho capito, gli strumenti per questo sono Rake e Thor, tuttavia, quale dovrei usare?

Il rastrello mi sembra più de facto e popolare. Ho sentito persone raccomandare Thor.

In che modo questi si presentano l'un l'altro in un riepilogo?

+1

Anche se la risposta di @ derick-bailey è un'ottima spiegazione di Rake contro Thor, probabilmente dovresti esaminare uno strumento di gestione della configurazione come Chef o fantoccio per la maggior parte delle attività di installazione del sistema (aggiorna ubuntu, installa i pacchetti, ecc.). Dovresti anche dare un'occhiata a Capistrano per distribuire l'app per i tuoi binari. Rake non sono i migliori strumenti per tutte queste attività – edhurtig

risposta

95

Rake e Thor hanno scopi diversi.

Rake è uno strumento di script di generazione generale specifico del progetto. In altre parole, metti il ​​tuo rakefile nella cartella del progetto e nel controllo del codice sorgente del tuo progetto, e puoi creare, costruire e svolgere altre attività di automazione specifiche per il tuo progetto in quel rakefile. Rake richiede un rakefile per essere eseguito.

Thor è uno strumento di scripting a riga di comando per uso generico che rende molto facile riutilizzare gli script su molti progetti e per eseguire la configurazione del progetto, ecc., Come si suggerisce. Thor ti consente di "installare" uno script eseguibile che puoi chiamare da qualsiasi punto del tuo sistema, in modo simile a chiamare le linee di comando "ruby", "gem" o "rake". Tuttavia, gli script di Thor sono più adatti all'automazione cross-application, poiché lo script Thor non si basa su un file che si trova nella cartella specifica del progetto. Uno script Thor è l'intero script, confezionato e installato per essere riutilizzato ovunque.

In base alle esigenze dichiarate, è meglio usare Thor perché è possibile installare lo script in un'unica posizione e farlo funzionare in qualsiasi punto del sistema. Non sarai vincolato a dove si trova un file Rake o qualcosa del genere.

A proposito, Rails 3 utilizza Thor per praticamente tutto ciò che non è specifico del progetto. Hai ancora un file Rake e continui ad eseguire operazioni come "rake db:migrate" o "rake test:units". Thor è usato per cose come "", "rails server" e "rails generate ..." L'uso di Thor AND Rake in Rails 3 è l'illustrazione perfetta di dove ognuno di questi strumenti è più adatto.

+1

Ottima spiegazione! Ho desiderato che fosse in qualche blog o nella home page di Thor =) I "binari" comandano uno script di Thor o in qualche modo utilizza Thor in qualche modo? –

+4

grazie. :) il comando "rails" è uno script thor –

+2

È una buona risposta, ma la risposta di @ Tom Corbin è in qualche modo migliore. La risposta scelta è la migliore valutazione dell'uso di Thor contro Rake - ma in realtà l'OP deve utilizzare un gestore di configurazione come Chef per eseguire la maggior parte di * ciò che dichiarano. (* per il resto, Thor è meglio di Rake.) –

13

Per impostare le faccende di Ubuntu, Chef potrebbe essere un'opzione migliore.

Dal loro sito web:

chef è un framework sistemi di origine integrazione aperta, costruito per portare i benefici della gestione della configurazione del server per l'intera infrastruttura.

È scritto in Ruby e ci sono tonnellate di ricette/libri di cucina dello chef. Lo chef gestirà l'installazione di Ubuntu e l'installazione di pacchetti, server, ecc.

Non so se si sta lavorando con macchine virtuali, ma Vagrant imposterà una macchina virtuale e quindi userà Chef per configurarlo.

+0

So che questa risposta è vecchio ma ora chiunque venga qui potrebbe anche voler dare un'occhiata a Docker! – bkunzi01

+0

Itamae (un cuoco leggero, https://github.com/itamae-kitchen/itamae) + Docker è una scelta. Sono contento di questo tipo di situazione di virtual machine + provisioning (anche se itamae + docker ha qualche problema, itamae ssh + docker sshd è una soluzione alternativa) –

0

C'è qualcosa di importante da ricordare qui.

http://guides.rubyonrails.org/generators.html nella sua sezione 8 Modelli di applicazione.

È possibile eseguire comandi git, selezionare gemme, capitare progetto.

E si potrebbe anche eseguire comandi di sistema per soddisfare l'ultimo punto: Upgrade Ubuntu, install all basic packages through apt-get.