El uso de Ruby 1.8.6/2.3.2 CarrilesCómo averiguar lo que está interceptando '' method_missing
estoy notando que cualquier método llamado en cualquiera de mis clases del modelo ActiveRecord está volviendo nil
en lugar de un NoMethodError. Además de molesto, esto está rompiendo los buscadores dinámicos (find_by_name
, find_by_id
, etc.) porque siempre devuelven nil
incluso donde existen registros. Las clases estándar que no se derivan de ActiveRecord :: Base no se ven afectadas.
¿Hay alguna manera de rastrear qué está interceptando method_missing antes de ActiveRecord :: Base?
cambio:
Después de cambiar a 1.8.7, he encontrado (gracias a @MichaelKohl) que el plugin will_paginate está manejando method_missing primero. Pero will_paginate ha existido en nuestro sistema (inalterado) durante bastante tiempo y el culpable debe ser algo más adelante en la cadena. ¿Alguna idea de cómo ver qué viene a continuación en esta cadena?
ACTUALIZACIÓN:
Resultó que había una joya (anotar-2.4.0) que era mono parches ActiveRecord::Base#method_missing
como un método en blanco. Desinstalar la gema resolvió mi problema. Aunque ninguna de las respuestas dadas encuentra realmente el problema, la respuesta por @Yanhao estuvo más cerca, ya que sólo necesita un pequeño ajuste a descubrir el método infractor alias
Esta respuesta fue la más cercana excepto que necesitaba expandir la búsqueda a 'if id.to_s = ~/method_missing/'por el método de aliasing – PinnyM
Eso fue Fabolous. +1. Gracias –