2011-04-29 10 views

Respuesta

2

La respuesta simple es no. Sin embargo, puede jugar con caller, que le da acceso a la pila de llamadas, al igual que un trazado inverso excepción:

def this_method_was_called_internally? 
    caller[1].include?(...) 
end 

(caller[1] sería la llamada anterior, es decir, el método de llamada this_method...)

Es muy hacker , y la información que obtienes de caller puede no ser suficiente.

No use esto para experimentar.

2

Si usted puede permitirse una pequeña modificación de su código:

class MyParent 
    def self.foo(scope) 
    if scope == self 
     puts "yay" 
    else 
     puts "boo" 
    end 
    end 
end 

class MyLibrary < MyParent 
    foo(self) # yay 
end 

MyLibrary.foo(self) # boo 
Cuestiones relacionadas