7
votes

Méthode non définie 'Chemin' pour Stringio dans Ruby

J'utilise l'extrait suivant dans une application Rails: xxx

qui fonctionne sur certains fichiers du Web, puis se bloque sur d'autres avec:

méthode non définie `chemin 'pour #

N'importe quel moyen de résoudre ce problème étrange et intermittent?


2 commentaires

Pourriez-vous fournir des expons d'URL avec et sans cette erreur?


@Flase Merci, cela semblait être des problèmes avec des fichiers extrêmement petits ne créant pas de fichier sauvegardé.


3 Réponses :


7
votes

Ne pas utiliser Open :: Uri comme ça.

simple faire: p> xxx pré>

alors vous pouvez lire code> le fichier car vous avez un objet io-type: p>

body = open(url).read


0 commentaires

3
votes

Selon le Docs Srtingeo Dosnt avoir un chemin de nom de la fonction.


1 commentaires

13
votes

Je suis définitivement en retard à la fête, mais ...

La racine de ce problème est que si vous utilisez ouvert (URL) sur un fichier inférieur à 10kb, il le convertira en Un objet de chaîne io automatique par magie au lieu d'utiliser un temple. L'objet Stringio comme tout le monde a souligné ne dispose pas de la méthode définie sur elle.

La valeur par défaut (10 ko) est défini par le stringmax constante ...

http: //yard.ruby-doc. org / stdlib-2.1.0 / openuri / buffer.html xxx

problème de boom, résolu!

PS Assurez-vous d'utiliser #send sinon vous ne pouvez pas accéder aux méthodes #remove_Consst et #Cont_set. p.p.s. Je ne conseillerais pas à la définir à zéro si vous faites beaucoup de petits IO, car les tempfiles créés seront probablement pires que de changer votre code pour utiliser correctement Strentio. Tout dépend de votre cas d'utilisation.


2 commentaires

Vous venez d'avoir sauvé mon bacon!


Cela n'a pas fonctionné pour moi à moins que je changeais tous les constantes stringmax dans l'extrait de cordes.