Je suis nouveau à EventMachine, donc je ne suis pas sûr de ce que cela signifie. Je reçois cette exception: Le programme est assez compliqué, je ne peux donc pas vraiment expliquer tout ce qui aurait pu conduire à ce sujet. Tout ce dont j'ai besoin, c'est un pointeur vers ce qu'il faut rechercher. L'erreur ne semble pas être documentée (en regardant http://eventmachine.rubyforge.org/ ). p> p>
4 Réponses :
J'ai eu cette exception soulevée lorsque une autre exception non gourmande a été soulevée dans la méthode d'initialisation d'une sous-classe d'événement Machine :: Connection. Vérifiez que l'arité de votre méthode d'initialisation de la sous-classe est correcte et que la méthode d'initialisation est en cours d'exécution sans erreurs. P>
Habituellement, ces erreurs se produisent dans l'initialisation ou la post_init. La première chose à faire est d'ajouter le sauvetage à l'intérieur de vos rappels pour déterminer ce qui provoque réellement cette erreur.
def initialize(*args) ... super rescue Exception ... end def post_init ... super rescue Exception ... end
C'est un excellent conseil, et merci pour l'illustration, mais cela ne attrape pas le scénario de Troy, où l'arité du #Imitialize code> est fausse. Cela s'est avéré être mon problème. (En fait, je faisais l'appel, ne pas être la connexion.) Probablement une bonne réponse à quelqu'un d'autre avec la même question, cependant. :)
I Fixe une exception forcée pour ce cas dans EventMachine il y a plus d'un an. C'est dans la pré-élévation 1.0 GEM ( GEM Installez EventMachine --Pre code>) ou mieux, utilisez EventMachine à partir du référentiel. P>
J'ai vu ce commentaire à plusieurs endroits sur ce sujet. J'utilise EventMachine version 1.2.7 et c'est toujours un problème.
J'ai rencontré un problème similaire et tout en enquêtant sur une enquête sur https://github.com/igrigorik/em-http-request/issues/190#issuecomment-16995528 p>
Vous devez essentiellement envelopper em :: httprecest.new code> avec
em.schedule code> ou
em.next_tacquement code> si vous faites
EM :: HTTPRQUEST.NEW CODE> Dans votre code, même si c'est sous un
em.defer code> p>