2017-11-27 3 views
0

definiert wurde Wenn ich den folgenden Teil this article folgen:Herauszufinden, wo ein Verfahren

Figure out where a method was defined 

    object = Object.new 
    puts object.method(:blank?).source_location 
    => ["/gems/activesupport-5.0.0.beta1/lib/active_support/core_ext/object/blank.rb", 14] 

ich soll in die Lage zu finden, die Definition der blank? Methode, aber wenn ich in irb mit ruby 2.0.0 mir diesen Code versuchen Erhalten Sie diese Fehlermeldung:

➜ ~ irb 
    irb(main):001:0> object = Object.new 
    => #<Object:0x007fc84882f088> 
    irb(main):002:0> puts object.method(:blank?).source_location 
    NameError: undefined method `blank?' for class `Object' 
     from (irb):2:in `method' 
     from (irb):2 
     from /usr/bin/irb:12:in `<main>' 

Habe ich etwas verpassen?

Vielen Dank.

Antwort

1

.blank? Methode existiert nicht für einen Object Typ. Ich weiß ganz sicher, dass es für eine String Methode liegt vor, wenn ich die active_support lib

irb(main):001:0> String.new.method(:blank?).source_location 
=> ["/home/xeon/.rbenv/versions/2.3.4/lib/ruby/gems/2.3.0/gems/activesupport-4.2.8/lib/active_support/core_ext/object/blank.rb", 116] 

enthalten Wenn Sie umfassen activesupport-5.0.0.beta1 dann wird es für Sie arbeiten. (Blick auf den Quellpfad des Artikels, den Sie gepostet haben)

+0

Danke, wissen Sie, wann es sich geändert hat? Es scheint, dass der Autor während dieser Zeit mit Object gearbeitet hat. – ethd

+0

Autor dieses Artikels verwendet 'activesupport-5.0.0.beta1'. Ich denke in dieser speziellen Version von aktiver Unterstützung. Die leere Methode existiert für das Objekt. – xeon131

+0

Vielen Dank :) – ethd

Verwandte Themen