2014-04-02 89 views
0

因此,我有太多的代碼發佈,我已經谷歌搜索,但沒有找到任何解決方案。看看什麼叫一個類的初始化方法

我有一個類e.g:

class Example 
    def initialize 
    #some_code 
    p "class was initialized" 
    end 
end 

控制檯打印「類被初始化」兩次,我只能找到一條線所在班級被初始化。我的問題是,如果有一些方法可以從類的初始化方法的名稱中查找,那麼我可以找出爲什麼它初始化了兩次。

+0

嘗試提高上課的時候被初始化異常 - 那麼你可以清楚地看到的是所謂的,通過查看堆棧跟蹤 –

回答

2
class Example 
    def initialize 
    #some_code 
    p "class was initialized" 
    puts caller_locations 
    end 
end 

在傳統的Ruby:

class Example 
    def initialize 
    #some_code 
    p "class was initialized" 
    puts caller 
    end 
end 
+0

謝謝,方法調用者正是我正在尋找的,所以我會將你的標記爲正確的 – Eugen

+0

對,「調用者」! :) –

1

您可以引發/捕獲一個異常,這將允許您訪問堆棧跟蹤。

class Example 
    def initialize 

    begin 
     raise 
    rescue => e 
     puts e.backtrace 
    end 
    end 
end 
+0

謝謝,您的和sawas的回答都很好,並幫助我找出爲什麼被稱爲兩次。 – Eugen

相關問題