0 votes

L'interprète Ruby plante avec un certain mot

Ok, celle-ci est un peu ridicule, et j'ai presque peur que personne ne me croie. Mais c'est parti :

J'ai écrit une application Ruby Rails qui gère le contenu de plusieurs domaines. Je sais que cela va à l'encontre de la règle cardinale de Rails, mais chaque domaine a toutes ses informations dans un fichier de configuration. Je sais que c'est probablement une erreur, mais c'est ainsi que les choses sont configurées pour l'instant, et ce ne sera pas le cas dans un avenir proche (bien que cela le devienne). Quoi qu'il en soit, le nom du domaine que vous voulez voir est passé en paramètre (du moins dans le développement). Ce paramètre est utilisé pour ouvrir le fichier de configuration du même nom. Cela signifie que si je veux voir le contenu du domaine xxx, je dois entrer (avec un serveur Mongrel actif) http://localhost:3000?name=xxx . Rails se référera à xxx.xml et en tirera les informations nécessaires.

Cela a bien fonctionné pour tous les domaines jusqu'à présent. Il a été facile de générer des fichiers de configuration et de les modifier en conséquence. Sauf qu'il y a maintenant un domaine qui, lorsque j'essaie de l'afficher, fait planter l'interpréteur Ruby. Après l'avoir testé, la seule chose qui pose problème est le nom de domaine, qui est pumarunningshoes.com. Lorsque j'ai remplacé le mot puma par luma, tout s'est bien passé. Lorsque je l'ai remplacé par luma, tout s'est à nouveau effondré. Je dois donc conclure que Rails, ou Mongrel, déteste le mot "puma". Pourquoi ? S'agit-il d'un mot réservé ou d'une fonction que je ne connais pas ?

Merci de votre aide !

1voto

G. Martin Points 93

Ok, je l'ai en quelque sorte réparé. Je n'aime pas l'admettre, car c'est plutôt embarrassant. Cependant, dans l'esprit de SO, qui est dédié à l'apprentissage, je vais décrire ma solution.

En fait, j'ai parcouru ligne par ligne la méthode du contrôleur qui a été appelée pour ce domaine. J'ai découvert que l'une de mes méthodes, qui a fonctionné pour tous les autres domaines, échoue d'une manière ou d'une autre pour celui-ci. Lorsque j'ai supprimé les appels de méthode et les éléments de vue associés, cela a soudainement fonctionné.

J'ai supposé que si cela fonctionnait pour tous les autres domaines, cela fonctionnerait également pour celui-ci. Je n'ai rien fait de différent pour celui-ci. Je dois donc maintenant comprendre pourquoi la méthode échoue pour celui-ci. Mais au moins, j'ai réussi à la faire fonctionner.

J'apprécie votre aide. Merci à la communauté SO !

0voto

Hemant Kumar Points 761

En fait, vous devriez pouvoir attacher GDB à un processus mongrel en cours d'exécution et simuler le crash (puisque vous savez déjà qu'il se produit lorsque le domaine est défini sur une chaîne de caractères particulière 'x') assez facilement.

Pour plus d'informations, voir Gdb wrapper pour ruby

Une fois que vous avez trouvé l'endroit où il se bloque (ou le segfault), mettez à jour ce fil de discussion avec la trace que vous avez obtenue dans gdb ou envoyez la trace à ruby-core.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X