From cf24701cc4941e483c8c78cb64b7bb5c6c7ed29e Mon Sep 17 00:00:00 2001 From: Anderson Dias Date: Tue, 22 Dec 2009 09:57:35 -0300 Subject: [PATCH] DelayedJob migration generator --- README.textile | 7 +++++- .../.delayed_job_migration_generator.rb.swp | Bin 0 -> 12288 bytes .../delayed_job_migration_generator.rb | 15 ++++++++++++ .../templates/.migration.rb.swp | Bin 0 -> 12288 bytes .../templates/migration.rb | 22 ++++++++++++++++++ 5 files changed, 43 insertions(+), 1 deletion(-) create mode 100644 generators/delayed_job_migration/.delayed_job_migration_generator.rb.swp create mode 100644 generators/delayed_job_migration/delayed_job_migration_generator.rb create mode 100644 generators/delayed_job_migration/templates/.migration.rb.swp create mode 100644 generators/delayed_job_migration/templates/migration.rb diff --git a/README.textile b/README.textile index 5b5434c52..e56ef3edf 100644 --- a/README.textile +++ b/README.textile @@ -14,7 +14,12 @@ It is a direct extraction from Shopify where the job table is responsible for a h2. Setup -The library evolves around a delayed_jobs table which looks as follows: +The library evolves around a delayed_jobs table which can be created by using: +

+  script/generate delayed_job_migration
+
+ +The created table looks as follows:

   create_table :delayed_jobs, :force => true do |table|
diff --git a/generators/delayed_job_migration/.delayed_job_migration_generator.rb.swp b/generators/delayed_job_migration/.delayed_job_migration_generator.rb.swp
new file mode 100644
index 0000000000000000000000000000000000000000..a8667168261b319fa62ff7870796e9a47161c734
GIT binary patch
literal 12288
zcmeI&v2N2)6b9g15Ca3HzzZA_BuiBrr!au5mH{ClinV~q2XK~u!-NQv(Y|M$NEoXG8~F1&;v%2tWV=
z5P$##AOHafKmY>&Nq|eEi1^QCS|jT1IX&ix`iBpO6S=#J(?O{Vp7f;0@Q4!KHvU6L
zDTC(H?mxBdnyo~|pc^=k8!oC`H%viSlOgk9jRKQ|7bTWgw({fYPRV)xnyBd_x2S82
zM_JCX|Khaul!CNoIX0dfXm>%|)gDG$bU3ZloZ8xuv2;`%NyR^Nq04N 'create_delayed_jobs'
+      }
+
+      m.migration_template 'migration.rb', 'db/migrate', options
+    end
+  end
+  
+  def banner
+    "Usage: #{$0} #{spec.name}"
+  end
+end
diff --git a/generators/delayed_job_migration/templates/.migration.rb.swp b/generators/delayed_job_migration/templates/.migration.rb.swp
new file mode 100644
index 0000000000000000000000000000000000000000..65ec69b5556bde5acd90b160be4fc349b3f27657
GIT binary patch
literal 12288
zcmeI2&u$z=5XL(ZIgvmF66b=IkU{HR2ZVxFfMkUO0USjHh{$ErJ6-E-dv<#0uJOiF
zlxqaffy8U%fH-hKi0258kUw9~EZ$AxBnNJ|TKc@6o~o{@U)NsjnrwZ4d510zE*Pxy
z#@xKO_0_L;&zSq~8za8j&)Y9s*>1D6wS@YGrgyU8&{mFP3e|8C;(n@a!9&NTJ!CiD
z3zOk4R~)T`nAW$)bH9sS4>#d?U0UHZJlY$?$qNJPOC@m92{ba@{P>*t@Pi9my?5TG
zH{bZ~q!ZElm4FgZ0!ly$C;=s)1eCyuBOvuD^9WU+hTeisErkzVNNt4KnW-TC7=Y9z<(jYl`~mH
z-A^JHLp>HdDVauVqqPYpj;EBkoDN)ARA$Y`Iyd&1%)RxbOP@w%DE2X%J2}kes~|)&
z5I^T6c3!9MUEWI)eYFe2m1A~$diCh~ERau>r+~9Vs7Pjb4wF4Dgf{$?y2$UD&Q}Hw
zQ@=SRji%O@$jQpn$L8lAU1Ooej4QHbNs*BeCz{y!2WX(A7fVz1quO)};f;q>h40g}Z8cN?RG
zWs4Oj(Z)4qx)OwuN*NX_WWu+)yBf_f|6THN$F^1du)Xv3CRaspAivBfOxtXiogp*e
zUU=NB3vKrtrSB`@-F)=ON}dvzg!WxtE`9nLZFQye=xPiH-k~Qlq-B4g6B*y=p)TY2~B)Zg|@_9E@|7DK;32hhR5BQt5xksa&f2Zlq
EV-oz42><{9

literal 0
HcmV?d00001

diff --git a/generators/delayed_job_migration/templates/migration.rb b/generators/delayed_job_migration/templates/migration.rb
new file mode 100644
index 000000000..c7e5bb4c1
--- /dev/null
+++ b/generators/delayed_job_migration/templates/migration.rb
@@ -0,0 +1,22 @@
+class CreateDelayedJobs < ActiveRecord::Migration
+  def self.up
+    create_table :delayed_jobs, :force => true do |t|
+      t.integer  :priority, :default => 0      # Allows some jobs to jump to the front of the queue
+      t.integer  :attempts, :default => 0      # Provides for retries, but still fail eventually.
+      t.text     :handler                      # YAML-encoded string of the object that will do work
+      t.string   :last_error                   # reason for last failure (See Note below)
+      t.datetime :run_at                       # When to run. Could be Time.now for immediately, or sometime in the future.
+      t.datetime :locked_at                    # Set when a client is working on this object
+      t.datetime :failed_at                    # Set when all retries have failed (actually, by default, the record is deleted instead)
+      t.string   :locked_by                    # Who is working on this object (if locked)
+
+      t.timestamps
+    end
+
+    add_index :delayed_jobs, :locked_by
+  end
+
+  def self.down
+    drop_table :delayed_jobs
+  end
+end