我的/ lib文件夹中有一个类,我的delayed_job守护程序调用它来处理类型为Foo的对象。如果我在worker类中没有“requires'foo'”,那么它不知道如何处理从DB获取的YAML并且我得到“未定义的方法”错误。添加“requires'foo'”显然会解决这个问题,这是通常的解决方案。
但问题是我在Foo类中有counter_cache => true。那么当DJ守护进程加载Rails环境时,会发生Foo自动加载并为我的counter_cache添加回调。然后,delayed_job守护程序运行,执行“requires'foo'”并且它顺从地重新加载Foo并为counter_cache添加另一个回调,这导致我的counter_cache每次添加或删除的行都会更新两次。
有没有办法换行:counter_cache => true所以它只运行一次?有没有办法让我的DJ工作者类使用'Foo'类型的对象而不必明确使用'requires'?
答案 0 :(得分:0)
除非定义?(Foo)可以提供帮助:
class Foo
..
end unless defined?(Foo)
它让我想起将my.h的内容包含在#ifndef中的C模式.. #endif:
#ifndef _MY_H_
#define _MY_H_
#endif /* _MY_H_ */