0

有问题的代码:

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在函数本身中进行初始化吗?谢谢。

4

1 回答 1

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

因此,这些方法应该在您的队列工作人员中按预期工作。

于 2013-09-29T13:01:29.263 回答