有问题的代码:
class Model < ActiveRecord::Base
require 'Library'
AN_ARRAY = [ 1, 2 ]
THING = Classname.new.thing()
def self.perform(param)
# do stuff using THING, i.e. THING.do(something)
do_things(param)
end
def self.do_things(param)
# do stuff with AN_ARRAY and/or THING
end
end
我不太确定Rails如何处理模型。前三个语句只执行一次吗?是否只有一个THING
,或者可能会有很多THING
?如果我将工作人员排队以执行self.perform()
,只要THING
的状态没有改变,事情就会好起来吗?我应该在功能本身中初始化THING
吗?感谢。
答案 0 :(得分:0)
加载类时,所有行都由ruby评估一次:
以下两行定义了两个常量,因为它们以大写字母开头。这意味着只有一个THING和一个AN_ARRAY。
AN_ARRAY = [ 1, 2 ]
THING = Classname.new.thing()
下面的def
语句也会被评估一次,最后定义两个类方法:
def self.perform(param)
# do stuff using THING, i.e. THING.do(something)
do_things(param)
end
def self.do_things(param)
# do stuff with AN_ARRAY and/or THING
end
因此,这些方法应该在队列工作者中按预期工作。