Ruby on rails Rails中DelayedJob的助手类

Ruby on rails Rails中DelayedJob的助手类,ruby-on-rails,ruby-on-rails-3,delayed-job,Ruby On Rails,Ruby On Rails 3,Delayed Job,为了按计划启动延迟的\u作业,您需要具有具有延迟的\u作业可以调用的perform方法的帮助器类。在调用使用这些类创建计划的延迟作业的任何类之前,都需要定义它们。所有这些都很短,在我的例子中有很多。例如: class AccountUpdateJob < Struct.new(:account_id) def perform acct = Account.find(account_id) acct.api_update end end class Accou

为了按计划启动延迟的\u作业,您需要具有具有延迟的\u作业可以调用的perform方法的帮助器类。在调用使用这些类创建计划的延迟作业的任何类之前,都需要定义它们。所有这些都很短,在我的例子中有很多。例如:

class AccountUpdateJob < Struct.new(:account_id)
  def perform
    acct = Account.find(account_id)
    acct.api_update
  end
end   
class AccountUpdateJob

我在initializers文件夹中名为“dj_helper_classes”的文件中执行此操作。这样做对吗?

我把我的文件保存在lib/jobs中,每个类一个文件。因此,您的示例将出现在lib/jobs/account\u update\u job.rb中

module Jobs
    class AccountUpdateJob < Struct.new(:account_id)
        def perform
          acct = Account.find(account_id)
          acct.api_update
        end
    end
end   
模块作业
类AccountUpdateJob
如何确保它们都能及时加载以供使用?默认情况下,Rails3不会自动加载lib目录中的所有内容。您可以通过将以下内容添加到application.rb
config.autoload_paths+=%W(#{config.root}/lib)
config.autoload_paths+=Dir[“#{config.root}/lib/**/”])
可能值得注意的是,
application.rb
已经包含了相关的lib自动加载行,默认情况下,它只是被注释掉了。下面是关于自动加载lib目录的更多讨论: