Où sont râteau tâches définies?
Sur un fraîchement créé Rails de projet (généré par rails someName
), on peut courir certains "par défaut" râteau tâches comme:
rake test
rake db:migrate
- etc
Question est, où est-ce que ces tâches soient décrites? La valeur par défaut Rakefile
n'a pas toutes ces tâches.
En outre, j'ai vérifié certains projet qui utilise rspec
et je suis capable de courir rake spec
pour exécuter tous les tests. D'où vient le spec
cible définie?
Vous devez vous connecter pour publier un commentaire.
Râteau tâches sont automatiquement chargés à partir de la structure de dossier
lib/tasks/*.rake
Lorsque nous parlons de la tâche db:migrate par exemple, il est situé au sein du gem rails en
lib/tasks/databases.rake
Donc, pour un projet spécifique, vous aurez toujours les tâches au sein de la structure de dossier de projet ainsi que toutes les tâches au sein de l'gemmes.
rake -W task:name
Si par décrites tu veux dire défini, râteau -W est votre ami. Exemple:
=>
Viens de trouver ceci aujourd'hui 🙂
Pour trouver les fichiers et les numéros de ligne lorsqu'une tâche est définie et/ou modifié de le faire:
Démarrer une console rails:
Puis exécutez ces commandes:
Râteau fondamentalement pouvez suivre les emplacements à l'interne et a une chouette méthode pour montrer à la demande. Le code ci-dessus essentiellement des charges de râteau, dit Râteau pour suivre l'emplacement des fichiers, les charges de la Rakefile (et tous les autres inclus), des trouvailles à la tâche en question, et appelle les emplacements méthode.
De sameers commentaire, pour râteau v 10.1.0 et, éventuellement, des versions plus anciennes de rake que vous pourriez avoir à appeler:
tsk.actions
au lieu de
tsk.emplacements
tsk.actions
Rake.application.tasks.find
. Aussi, vous pouvez avoir besoin d'envoyer de charge si c'est le privé pour vous.Rake.application.send(:load, 'Rakefile')
ou vous pouvez simplement utiliserRake.application.load_rakefile
.Vous n'avez pas à spécifier la version de rails que vous utilisez, mais en 3.0.7 la
db
tâches sont situés dans le ActiveRecord gem dansMise à jour:
Comme des rails version 3.2.7, les tâches sont toujours là où je l'ai mentionné ci-dessus.
Dans Rails 3, le
railties
gem définit beaucoup de rake tâches.Si votre
$EDITOR
est configuré, vous pouvez facilement voir par vous-même avec leopen_gem
gem:À la liste toutes les tâches:
Depuis de nombreuses tâches viennent de gemmes que vous installez, il est difficile de savoir lesquels sont ajoutés...
rails --help
pourrait aider à montrer une partie des tâches rake n'est pas: guides.rubyonrails.org/command_line.html#bin-railsLe projet que vous avez vérifié utilise probablement le rspec-rails gem. Que gem définit la
spec
tâche. Vous pouvez voir le code source ici:https://github.com/rspec/rspec-rails/blob/master/lib/rspec/rails/tasks/rspec.rake