Added delayed_job as new background queue manager.
This commit is contained in:
parent
5fb0bc2444
commit
b0c9580b53
6 changed files with 56 additions and 1 deletions
2
Gemfile
2
Gemfile
|
@ -18,6 +18,8 @@ gem 'meta_search'
|
|||
gem 'inherited_resources'
|
||||
gem 'localize_input', :git => "git://github.com/bennibu/localize_input.git"
|
||||
gem 'wikicloth'
|
||||
gem 'daemons'
|
||||
gem 'delayed_job_active_record'
|
||||
|
||||
group :production do
|
||||
gem 'exception_notification', :require => 'exception_notifier'
|
||||
|
|
|
@ -38,6 +38,12 @@ GEM
|
|||
builder (2.1.2)
|
||||
client_side_validations (3.0.4)
|
||||
activesupport (~> 3.0.0)
|
||||
daemons (1.1.9)
|
||||
delayed_job (3.0.3)
|
||||
activesupport (~> 3.0)
|
||||
delayed_job_active_record (0.3.2)
|
||||
activerecord (> 2.1.0)
|
||||
delayed_job (~> 3.0.0)
|
||||
erubis (2.6.6)
|
||||
abstract (>= 1.0.0)
|
||||
exception_notification (2.4.0)
|
||||
|
@ -122,6 +128,8 @@ PLATFORMS
|
|||
|
||||
DEPENDENCIES
|
||||
client_side_validations
|
||||
daemons
|
||||
delayed_job_active_record
|
||||
exception_notification
|
||||
fastercsv
|
||||
haml
|
||||
|
|
2
config/initializers/delayed_job_config.rb
Normal file
2
config/initializers/delayed_job_config.rb
Normal file
|
@ -0,0 +1,2 @@
|
|||
Delayed::Worker.max_attempts = 5
|
||||
Delayed::Worker.delay_jobs = !Rails.env.test?
|
22
db/migrate/20120824114234_create_delayed_jobs.rb
Normal file
22
db/migrate/20120824114234_create_delayed_jobs.rb
Normal file
|
@ -0,0 +1,22 @@
|
|||
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.string :queue # The name of the queue this job is in
|
||||
table.timestamps
|
||||
end
|
||||
|
||||
add_index :delayed_jobs, [:priority, :run_at], :name => 'delayed_jobs_priority'
|
||||
end
|
||||
|
||||
def self.down
|
||||
drop_table :delayed_jobs
|
||||
end
|
||||
end
|
18
db/schema.rb
18
db/schema.rb
|
@ -11,7 +11,7 @@
|
|||
#
|
||||
# It's strongly recommended to check this file into your version control system.
|
||||
|
||||
ActiveRecord::Schema.define(:version => 20120622094337) do
|
||||
ActiveRecord::Schema.define(:version => 20120824114234) do
|
||||
|
||||
create_table "article_categories", :force => true do |t|
|
||||
t.string "name", :default => "", :null => false
|
||||
|
@ -78,6 +78,22 @@ ActiveRecord::Schema.define(:version => 20120622094337) do
|
|||
|
||||
add_index "configurable_settings", ["name"], :name => "index_configurable_settings_on_name"
|
||||
|
||||
create_table "delayed_jobs", :force => true do |t|
|
||||
t.integer "priority", :default => 0
|
||||
t.integer "attempts", :default => 0
|
||||
t.text "handler"
|
||||
t.text "last_error"
|
||||
t.datetime "run_at"
|
||||
t.datetime "locked_at"
|
||||
t.datetime "failed_at"
|
||||
t.string "locked_by"
|
||||
t.string "queue"
|
||||
t.datetime "created_at"
|
||||
t.datetime "updated_at"
|
||||
end
|
||||
|
||||
add_index "delayed_jobs", ["priority", "run_at"], :name => "delayed_jobs_priority"
|
||||
|
||||
create_table "deliveries", :force => true do |t|
|
||||
t.integer "supplier_id"
|
||||
t.date "delivered_on"
|
||||
|
|
5
script/delayed_job
Executable file
5
script/delayed_job
Executable file
|
@ -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 a new issue