C'è un modo per catturare un errore "comando non trovato" in uno script Ruby? Per esempio, data:Catturare errori "comando non trovato" dai backtick di Ruby?
output = `foo`
Come faccio a intrappolare la situazione in cui foo
non è installato? Mi aspettavo di poter fare rescue
un'eccezione, ma questo non sembra funzionare su 1.8.7. C'è un modo diverso di chiamare il sottoprocesso che farà ciò che voglio? O c'è un approccio diverso?
Aggiornamento
Le mie scuse, ho dimenticato di dire un requisito nascosta: Io preferirei che l'interprete non perde la riga di comando per l'utente (che può contenere dati sensibili), motivo per cui l'eccezione il metodo di cattura è preferito. Ci scusiamo ancora per averlo lasciato fuori la prima volta.
Una tattica che è utile quando si ha bisogno di una caratteristica specifica, è per eseguire un controllo preliminare, cercando prima la funzionalità, l'app o il codice, prima di provare a eseguirlo. Dicendo 'which 'foo'' o usando un paio di File test per cercare l'esistenza del file più la sua eseguibilità, vi dirà se è sicuro procedere senza effettivamente tentare il comando e fallendo. Offre un'esperienza utente migliore perché puoi controllare il modo in cui reagisci alla funzionalità mancante, o percorrere un percorso alternativo o notificare all'utente che non puoi procedere perché manca qualcosa. –
D'accordo, ma "quale 'foo'' non è multipiattaforma, e non potrei pensare a un modo multipiattaforma di farlo se non provarlo e cogliere l'errore ... – kfb