我应该如何在Rails 3中为delayed_job构建数据迁移任务?

时间:2011-05-17 19:54:48

标签: ruby-on-rails-3 delayed-job

我现在有一份永不放弃的工作。它涉及为一堆产品品牌运行数据迁移。

我有一个名为MigrationJob的类。它循环遍历Brands表中的每个记录,并在每个记录上调用“migrate”方法,从而将数据从不同的数据库中移出。

include Migration

class MigrationJob

  def perform

    while true

      for brand in Brand.all

       puts "Migrating account #{brand.name}"

       brand.migrate

     end

  end

end

但是请注意,我在delayed_job中进行了整个迁移。这似乎是错的。我是否应该在delayed_job中进行单个品牌的迁移,以便我可以更轻松地跟踪故障?

我真的很想这样做。但是,我应该在哪里放置执行常量迁移的代码?在rake任务中?

1 个答案:

答案 0 :(得分:1)

当你说你在delayed_job中进行了整个迁移时。我假设你的意思是你对perform方法说'handle_asynchronously'。如果您希望将每个迁移作为延迟运行:

include Migration

 class MigrationJob

    def perform

      while true

        for brand in Brand.all

        puts "Migrating account #{brand.name}"

        brand.delay.migrate

     end
   end
 end

现在,您可以跟踪哪些作业失败,每次作业需要多长时间等等。