2010-07-22 29 views
1

我最近遇到了一個奇怪的錯誤,只發生在生產模式。覆蓋Ruby類的錯誤僅在生產中體現出來?

我正在使用定義類Achievement(http://github.com/paulca/paths_of_glory/blob/master/app/models/achievement.rb)的榮耀寶石路徑。

在基類,級別定義:

def level(level, options = {}) 
    levels << {:level => level, :quota => options[:quota]} 
end 

輝煌寶石的路徑所進行的工作,你創建一個從基本實現模型繼承模型。我們(錯誤地,回想起)創建了一個新模型/ aachievements.rb(是的,故意拼寫錯誤,因爲如果我們調用Rails會嘗試加載Achievement它的achievement.rb)文件,但是,而不是重新打開類,我們重新定義了類。因爲我們的重新定義不包括關卡,所以當我們部署到生產環境時,我們遇到了錯誤,這個關卡是一種undef方法。

問題是,爲什麼這個錯誤沒有在開發模式中體現出來呢?兩個寶石和班級都是一樣的。

任何想法?

回答

1

除非你命名空間或刪除了常量,否則你還是重新打開了這個類,或者你的是先定義然後再由gem重新打開的。

不管怎樣,在環境中打開development.rb中的緩存類並查看會發生什麼。

+0

嗯,這個錯誤發生在生產中,那麼這是否意味着它發生在cached_classes開啓時呢? – shedd 2010-07-25 19:49:23

+0

這就是爲什麼我說在開發中嘗試使用緩存類的原因 - 讓我知道發生了什麼。 – 2010-07-26 15:38:49

相關問題