2009-03-04 5 views
1

J'ai un fichier de tâche rake pour une application RubyOnRails qui réside dans le répertoire lib/tasks. L'exécution de [rake db: migrate VERSION = 0] semble forcer le compilateur à vérifier la syntaxe dans les fichiers lib/tasks. S'il y a un fichier avec une mauvaise syntaxe alors [rake db: migrate] ne s'exécute pas. Pourquoi? Alors que faire si j'ai un mauvais fichier dans lib/tâches. Que se passe-t-il ici? Merci.Pourquoi l'initialisation de la syntaxe d'exécution [rake db: migrate] vérifie-t-elle les tâches rake dans le répertoire lib/tasks?

Répondre

1

Lorsque Rake s'exécute, il charge automatiquement tous les fichiers .rake dans votre dossier lib/tasks. Quand il charge ces tâches, si vous avez une erreur de syntaxe, il sera intercepté.

+0

Comment savez-vous cela? Y a-t-il de la documentation qui en parle? – fooledbyprimes

+0

C'est dans la documentation de Rails quelque part. C'est l'une des conventions sur les règles de configuration que Rails utilise. – erik

+0

Donc, dites-vous que lorsque je lance l'utilitaire rake fourni avec les rails, c'est une version de rake qui a été tweekée pour fournir des conventions liées aux rails? – fooledbyprimes

2

Lorsque rake s'exécute, il charge tous les fichiers .rake dans lib/tasks avant de rechercher la tâche qui lui a été demandée. Il charge tous les fichiers au lieu de s'arrêter lorsqu'il trouve la tâche souhaitée, car les tâches peuvent être remplacées par des fichiers plus tard dans l'ordre de chargement.

Vous pouvez éviter les avoir tous chargés en spécifiant le rakefile que vous voulez:

rake mytask --rakefile lib/my_task.rake 
Questions connexes