避免在/ lib文件夹中的delayed_job类中使用'requires'

时间:2010-08-14 19:05:27

标签: ruby-on-rails delayed-job

我的/ 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'?

1 个答案:

答案 0 :(得分:0)

除非定义?(Foo)可以提供帮助:

class Foo
  ..
end unless defined?(Foo)

它让我想起将my.h的内容包含在#ifndef中的C模式.. #endif:

#ifndef _MY_H_
#define _MY_H_

#endif /* _MY_H_ */