2013-07-07 45 views
8

我下面從Ruby Koansabout_proxy_object_project.rb練習有這段代碼:紅寶石2.0拋出「[BUG]棧一致性錯誤」

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 

這被稱爲是這樣的:

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 

問題是行tv.channel = 10是「打破」翻譯和投擲:

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

我已經嘗試了與Ruby 1.9.3相同的代碼,它的工作。我正在使用Ruby 2.0.0-p195。

那麼,這是一個錯誤/錯誤?或者我正在做一些可怕的錯誤?

+0

馬特指出,它似乎已在6月27日發佈的p247中得到修復。 – sawa

回答

2

是的。這是一個在ruby 2.0.0p195 (2013-05-14 revision 40734) [x86_64-linux]中的Ruby錯誤。在堆棧跟蹤的結尾,它說:

[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 

您若本報告紅寶石核心。爲了Ruby社區的緣故,請這樣做。

正如matt所指出的那樣,它在Ruby 2.0.0p247中得到了修復。

我沒有看到你做錯了什麼。

+3

看起來這是在p247中修復的。 – matt

+0

@matt感謝您的信息。 – sawa

+0

我試過用p247,它的工作,謝謝! (我仍然很好奇,看看是什麼導致了這個問題,但我不認爲我會理解來源:P) – NicoSantangelo