Je veux créer un script ruby qui va prendre des codes à barres à partir d'un fichier texte, rechercher un service web pour ce code à barres et télécharger le résultat.Impossible de 'file.open.read' une URL dans un if-block ruby
J'ai d'abord essayé de tester le téléchargement du service web. Dans un fichier lorsque je hardcode la requête fonctionne bien:
result_download = open('http://webservice.org/api/?query=barcode:78686112327', 'User-Agent' => 'UserAgent [email protected]').read
Tout fonctionne très bien.
Lorsque j'essaie de prendre le code-barres d'un fichier texte et d'exécuter la requête, je rencontre des problèmes.
IO.foreach(filename) {|barcode| barcode
website = "'http://webservice.org/api/?query=barcode:"+barcode.to_str.chomp + "', 'User-Agent' => 'UserAgent [email protected]'"
website = website.to_s
mb_metadata = open(website).read
}
Le résultat de ceci est:
/home/user/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/open-uri.rb:37:in `initialize': No such file or directory @ rb_sysopen - http://webservice.org/api/?query=barcode:78686112327', 'User-Agent' => 'UserAgent [email protected]' (Errno::ENOENT)
Je ne peux pas savoir si ce problème se produit parce que la chaîne que je produis est en quelque sorte pas une URL valide et Ruby tente d'ouvrir un non -existent fichier, ou est le problème que je fais tout cela dans une boucle for et le fichier/url n'existe pas là. J'ai essayé d'employer .write ouvert (site Web) au lieu de .read ouvert (site Web) mais cela produit la même erreur.
Toute aide serait grandement appréciée.
c'est génial. Je vous remercie beaucoup pour votre aide. Je ne suis pas très expérimenté et concentré sur l'obtention de chaque élément correct. Je n'ai même pas pensé à le faire de la manière élégante que tu as. Merci encore. – Jack