2009-02-23 6 views
68

Je reçois une erreur chaque fois que j'essaie d'utiliser la fonction dans une tâche de rake. Y a-t-il un moyen de le faire fonctionner?Comment utiliser "gets" sur une tâche rake?

L'erreur dit, « pas un tel fichier ou répertoire - (rake nom de la tâche) »

+0

Le message d'erreur semble assez explicite ... –

+5

Cela peut sembler être le cas, mais ce n'est pas le cas. Voir ma réponse ci-dessous. Il y a pas mal de confusion sur la différence entre Kernel # gets et STDIN.gets. –

Répondre

138

Le problème est que Kernel#gets (qui est ce que vous appelez si vous utilisez simplement gets en lui-même) suppose que vous tirez d'un fichier nommé par les arguments passés à Rake. Cela signifie que gets essaie de renvoyer le contenu d'un fichier appelé [rake-task-here], qui n'existe presque certainement pas.

Essayez STDIN.gets.

+1

C'est tout! à la perfection – debbie

-4

Je ne pense pas que vous devriez utiliser obtient dans une tâche de râteau, si vous avez besoin d'obtenir les commentaires de la commande En ligne, vous devriez probablement le passer en paramètre, mais si vous postez du code qui ne fonctionne pas, je suis sûr que vous obtiendrez une meilleure réponse.

+19

En général, les arguments de ligne de commande sont une meilleure option, mais il y a beaucoup de bonnes raisons d'utiliser get dans une tâche rake. La plupart d'entre eux ont à voir avec l'authentification ou la vérification que vous voulez vraiment faire ce que vous dites de faire. ("déployer le code de production") –