覆盖Ruby类的错误仅在生产中体现出来?

问题描述:

我最近遇到了一个奇怪的错误,只发生在生产模式。覆盖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方法。

问题是,为什么这个错误没有在开发模式中体现出来呢?两个宝石和班级都是一样的。

任何想法?

除非你命名空间或删除了常量,否则你还是重新打开了这个类,或者你的是先定义然后再由gem重新打开的。

不管怎样,在环境中打开development.rb中的缓存类并查看会发生什么。

+0

嗯,这个错误发生在生产中,那么这是否意味着它发生在cached_classes开启时呢? – shedd 2010-07-25 19:49:23

+0

这就是为什么我说在开发中尝试使用缓存类的原因 - 让我知道发生了什么。 – 2010-07-26 15:38:49