2013-07-07 14 views
8

Obserwuję ćwiczenia z Ruby Koans iw about_proxy_object_project.rb Jest taki kawałek kodu:Ruby 2.0 wyrzuca "[BUG] Stos błąd spójności"

class Proxy 
    def initialize(target_object) 
    @object = target_object 
    end 

    # This method was added by me 
    def method_missing(method_name, *args, &block) 
    @object.send method_name 
    end 
end 

To jest wywoływana tak:

def test_tv_methods_still_perform_their_function 
    tv = Proxy.new(Television.new) # Television is a class with a :channel attr_accessor and a power method 

    tv.channel = 10 
    tv.power 

    assert_equal 10, tv.channel 
    assert tv.on? 
end 

problem polega na tym, że linia tv.channel = 10 jest „łamanie” interpretera i rzuca:

[BUG] Stack consistency error (sp: 53, bp: 54) 
ruby 2.0.0p0 
(...)  
full stack trace follows 

Próbowałem już tego samego kodu z Ruby 1.9.3 i działa. Używam Ruby 2.0.0-p195.

Czy to błąd/błąd? Czy robię coś okropnie nie tak?

+0

Wygląda na to, że zostało naprawione w p247 wydanym 27 czerwca, jak wskazuje matt. – sawa

Odpowiedz

2

Tak. Jest to błąd Ruby w ruby 2.0.0p195 (2013-05-14 revision 40734) [x86_64-linux]. Pod koniec śladu stosu, to mówi:

[NOTE] 
You may have encountered a bug in the Ruby interpreter or extension libraries. 
Bug reports are welcome. 
For details: http://www.ruby-lang.org/bugreport.html 

powinien zgłosić to do Ruby rdzenia. Zrób to dla dobra społeczności Ruby.

Jak wskazano przez matę, jest on naprawiony w Ruby 2.0.0p247.

Nie widzę, żebyś zrobił coś złego.

+3

Wygląda na to, że zostało to naprawione w p247. – matt

+0

@matt Dzięki za informację. – sawa

+0

Próbowałem z p247 i działa, dziękuję! (Wciąż jestem ciekawy, co jest przyczyną problemu, ale nie sądzę, żebym zrozumiał źródło: P) – NicoSantangelo

Powiązane problemy