2010-08-19 27 views
2

Je veux construire des scripts qui automatisent les choses pour moi.Utiliser Rake ou Gem pour créer des scripts?

Voici un exemple de ce que je veux faire:

  • Créer une nouvelle application rails (rails nouveau application_name --database = mysql)
  • Aller au dossier
  • Initialiser git (git init; ajouter git;. git commit -m "premier commit"; git ajouter une adresse de nom à distance; git nom Push maître)
  • créer un projet Heroku (heroku créer, git pousser maître heroku)
  • Etc ...

J'ai beaucoup de tels scripts (pas seulement liés aux rails) que je veux construire.

Faut-il coder ce type de pas avec Rake ou Gem? D'après ce que j'ai compris, rake récupère généralement les tâches du fichier Rakefile du dossier actuel. Si je veux rendre les opérations universelles, est-il préférable de créer une gemme?

La chose est que je veux pouvoir l'appeler de tout ce répertoire que je suis.

Quels sont les avantages et les inconvénients avec chacun?

+0

Quel système d'exploitation utilisez-vous? – Brian

+0

Serveur Ubuntu 10.4. Pourquoi? –

+0

Parce que ma réponse n'est pas très windowsy :-) – Brian

Répondre

2

Aller avec râteau ou une gemme est bien. Si vous voulez centraliser les tâches votre râteau (en supposant que vous êtes sur Mac OS X ou une variante nix Linux/*), vous pouvez les créer dans votre répertoire personnel:

~/.rake/*.rake 

Rake se penchera là-bas pour les tâches à exécuter si dans un répertoire w/pas de Rakefile. En outre, considérez (encore une fois, si vous êtes sur une sorte de plate-forme * nix) la création d'alias shell à vos commandes.

Edit:

Une autre considération spécifique à votre travail Rails est de tirer parti de modèles d'application. Voici un lien vers un bon screencast.

+0

Bien que cela soit tout à fait logique, je n'avais pas encore essayé. Un bon endroit pour mettre les tâches de rake central. –

1

Vous devriez utiliser des tâches rake pour ce genre de choses. Bates a un screencast montrant comment accomplir ce que vous essayez de faire. Fondamentalement, vous créez une tâche personnalisée et après que vous pouvez appeler rake my_task et il va exécuter votre script.

2

Une partie de ce que vous voulez pourrait être accomplie avec des alias de shell, certains avec des gemmes, d'autres avec des rake.

En utilisant la suggestion de Brian, j'ajouté ce qui suit à ~/.rake/git.rake:

namespace :git do 
    desc "Init, add, initial commit" 
    task :init do 
    `git init .` 
    `git add .` 
    `git commit -m 'Initial commit'` 
    end 
end 

Puis, dans un répertoire que je peux courir "git râteau: init" et il fera tout le programme d'installation intial . L'ajout à distance est un peu plus difficile car le nom distant est une variable (peut être fournie via une variable shell ou une invite Readline).

Pour créer une application rails, j'ajouterais un alias à ~ /.bash_profile:

alias new_mysql="rails new $ARGV --database=mysql" 

Exécutez ensuite "new_mysql myRailsProject". Pour la plupart, je pense que l'exécution d'un tas de scripts de ligne de commande serait un alias shell plutôt qu'une tâche Rake.