2016-10-04 2 views
0

souhaite exécuter une commande système sur ruby ​​en utilisant la fonction popen3 à partir d'Open3. Ce serait quelque chose comme:Ruby - Open3 popen3 fonction aseptisée

pdf2htmlEX --zoom 1.3 ~/test.pdf 

Comme le nom de fichier sera adopté par params, je voudrais le désinfecter. si elle est exécutée, par exemple:

Open3.popen3("pdf2htmlEX --zoom 1.3 ~/test.pdf") do |stdin, stdout, stderr, wait_thr| 

end 

Le code fonctionne très bien, mais lorsque je tente de séparer l'argument (comme les fonctions suggère cette façon, il serait échappé), quelque chose comme:

Open3.popen3("pdf2htmlEX --zoom 1.3", "~/test.pdf") do |stdin, stdout, stderr, wait_thr| 

end 

il me donne l'erreur: Aucun fichier ou répertoire - pdf2htmlEX --zoom 1.3

Est-ce que quelqu'un sait comment je le répare? Merci!

Répondre

1

Les arguments doivent être séparés de la commande. Essayez

Open3.popen3("pdf2htmlEX", "--zoom", "1.3", "~/test.pdf")...

+0

Merci, cela évite l'erreur! =) –

+0

Mais maintenant j'ai eu l'erreur de l'option non reconnue "--zoom 1.3". Retiré, puis, "Erreur d'E/S: Impossible d'ouvrir le fichier '~/test.pdf': Aucun fichier ou répertoire.", Même le fichier existant (et cela a fonctionné si j'ai passé la commande entière comme unique chaîne). Des idées? –

+0

avec le chemin absolu, travaillé ... mais toujours l'erreur om zoom param –