* using delayed_job as the gem for that * this could also be used for other background-jobs that are currently implemented using cronpull/41/head
parent
e65401764e
commit
5e13836c17
@ -0,0 +1 @@ |
||||
Delayed::Worker.logger = Rails.logger |
@ -0,0 +1,21 @@ |
||||
class CreateDelayedJobs < ActiveRecord::Migration |
||||
def self.up |
||||
create_table :delayed_jobs, :force => true do |table| |
||||
table.integer :priority, :default => 0 # Allows some jobs to jump to the front of the queue |
||||
table.integer :attempts, :default => 0 # Provides for retries, but still fail eventually. |
||||
table.text :handler # YAML-encoded string of the object that will do work |
||||
table.text :last_error # reason for last failure (See Note below) |
||||
table.datetime :run_at # When to run. Could be Time.zone.now for immediately, or sometime in the future. |
||||
table.datetime :locked_at # Set when a client is working on this object |
||||
table.datetime :failed_at # Set when all retries have failed (actually, by default, the record is deleted instead) |
||||
table.string :locked_by # Who is working on this object (if locked) |
||||
table.timestamps |
||||
end |
||||
|
||||
add_index :delayed_jobs, [:priority, :run_at], :name => 'delayed_jobs_priority' |
||||
end |
||||
|
||||
def self.down |
||||
drop_table :delayed_jobs |
||||
end |
||||
end |
@ -0,0 +1,5 @@ |
||||
#!/usr/bin/env ruby |
||||
|
||||
require File.expand_path(File.join(File.dirname(__FILE__), '..', 'config', 'environment')) |
||||
require 'delayed/command' |
||||
Delayed::Command.new(ARGV).daemonize |
Loading…
Reference in new issue