Existe-t-il un moyen de capturer une erreur «commande non trouvée» dans un script Ruby? Par exemple, étant donné:Capture des erreurs "command not found" des backticks de Ruby?
output = `foo`
Comment puis-je piéger la situation où foo
n'est pas installé? Je m'attendais à ce que je pourrais rescue
une exception, mais cela ne semble pas fonctionner sur 1.8.7. Existe-t-il une manière différente d'appeler le sous-processus qui fera ce que je veux? Ou y a-t-il une approche différente?
Mise à jour
Mes excuses, j'oublié de mentionner une exigence cachée: Je préférerais que l'interprète ne fuit pas la ligne de commande à l'utilisateur (il peut contenir des données sensibles), donc pourquoi l'exception méthode de capture est préférée. Encore des excuses pour avoir laissé ça la première fois.
Une tactique qui est utile lorsque vous avez besoin d'une fonctionnalité spécifique, est Pour exécuter un contrôle en amont, recherchez d'abord la fonctionnalité, ou l'application, ou le code, avant d'essayer de l'exécuter. Dire 'quel' foo'' ou en utilisant un couple de tests de fichiers pour rechercher l'existence du fichier plus son exécutabilité, vous dira s'il est sûr de procéder sans réellement tenter la commande et échouer. Cela améliore l'expérience utilisateur, car vous pouvez contrôler la façon dont vous réagissez à la fonctionnalité manquante et choisir un autre itinéraire, ou informer l'utilisateur que vous ne pouvez pas continuer car il manque quelque chose. –
D'accord, mais 'qui 'foo'' n'est pas multi-plateforme, et je ne pouvais pas penser à une façon multi-plateforme pour le faire autrement que pour l'essayer et attraper l'erreur ... – kfb