irb(main):005:0> class X
irb(main):006:1> def inspect
irb(main):007:2> "hey"
irb(main):008:2> end
irb(main):009:1> end
=> nil
irb(main):010:0> x = X.new.nomethod
NoMethodError: undefined method `nomethod' for hey:X
from (irb):10
Anyone know how I can get rid of the ':X' after 'hey'? I've tried:
class X
def self.name; ''; end
def self.to_s; ''; end
def class; ''; end
end
FYI, I decided to just chomp off everything after the 'for', so no big
deal. But I still don't understand where the error message was getting
the class name.
irb(main):005:0> class X
irb(main):006:1> def inspect
irb(main):007:2> "hey"
irb(main):008:2> end
irb(main):009:1> end
=> nil
irb(main):010:0> x = X.new.nomethod
NoMethodError: undefined method `nomethod' for hey:X
from (irb):10
Anyone know how I can get rid of the ':X' after 'hey'? I've tried:
class X
def self.name; ''; end
def self.to_s; ''; end
def class; ''; end
end
irb(main):005:0> class X
irb(main):006:1> def inspect
irb(main):007:2> "hey"
irb(main):008:2> end
irb(main):009:1> end
=> nil
irb(main):010:0> x = X.new.nomethod
NoMethodError: undefined method `nomethod' for hey:X
from (irb):10
Anyone know how I can get rid of the ':X' after 'hey'? I've tried:
the problem isn't inspect or anything else to do with X, it is method_missing. the default method_missing is raising with a message like:
"undefined method `#{msg}' for #{self.inspect}:#{self.class}"
So you can attack the 'problem' at the source:
···
On Nov 19, 2008, at 08:50 , Trans wrote:
>> class Object; def method_missing(*a); raise NoMethodError, "haha! stupid!"; end; end
=> nil
>> bork
NoMethodError: haha! stupid!
from (irb):3:in `method_missing'
from (irb):4
Tom, the so-called class path seems to be buried deep inside
unaccessible instance variables of the class. For a workaround use a
"#" as the first character of the inspect result:
class X
def inspect
"#hey"
end
end
X.new.x # => undefined method `x' for #hey (NoMethodError)
> But I still don't understand where the error message was getting
> the class name.
Tom, the so-called class path seems to be buried deep inside
unaccessible instance variables of the class. For a workaround use a
"#" as the first character of the inspect result:
class X
def inspect
"#hey"
end
end
X.new.x # => undefined method `x' for #hey (NoMethodError)