delayed_job_extras 0.2.2 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,9 +1,27 @@
1
+ require 'rails_generator'
1
2
  class DjExtrasGenerator < Rails::Generator::Base
2
3
 
3
4
  def manifest
5
+ # record do |m|
6
+ # m.migration_template "migration.rb", 'db/migrate',
7
+ # :migration_file_name => "add_delayed_job_extras"
8
+ # end
4
9
  record do |m|
5
- m.migration_template "migration.rb", 'db/migrate',
6
- :migration_file_name => "add_delayed_job_extras"
10
+ timestamp = Time.now.utc.strftime("%Y%m%d%H%M%S")
11
+ db_migrate_path = File.join('db', 'migrate')
12
+
13
+ m.directory(db_migrate_path)
14
+
15
+ Dir.glob(File.join(File.dirname(__FILE__), 'templates', 'migrations', '*.rb')).sort.each_with_index do |f, i|
16
+ f = File.basename(f)
17
+ f.match(/\d+\_(.+)/)
18
+ timestamp = timestamp.succ
19
+ if Dir.glob(File.join(db_migrate_path, "*_#{$1}")).empty?
20
+ m.file(File.join('migrations', f),
21
+ File.join(db_migrate_path, "#{timestamp}_#{$1}"),
22
+ {:collision => :skip})
23
+ end
24
+ end
7
25
  end
8
26
  end
9
27
 
@@ -0,0 +1,11 @@
1
+ class AddMoreTimeColumnsToDj < ActiveRecord::Migration
2
+ def self.up
3
+ add_column :delayed_jobs, :started_at, :datetime
4
+ add_column :delayed_jobs, :finished_at, :datetime
5
+ end
6
+
7
+ def self.down
8
+ remove_column :delayed_jobs, :finished_at
9
+ remove_column :delayed_jobs, :started_at
10
+ end
11
+ end
@@ -20,6 +20,18 @@ module Delayed
20
20
 
21
21
  alias_method_chain :invoke_job, :dj
22
22
 
23
+ def pending?
24
+ self.started_at.nil? && self.finished_at.nil?
25
+ end
26
+
27
+ def running?
28
+ !self.started_at.nil? && self.finished_at.nil?
29
+ end
30
+
31
+ def finished?
32
+ !self.started_at.nil? && !self.finished_at.nil?
33
+ end
34
+
23
35
  class << self
24
36
 
25
37
  def stats(start_date = 1.day.ago.beginning_of_day, end_date = Time.now.beginning_of_day)
@@ -16,14 +16,20 @@ module Delayed
16
16
 
17
17
  def perform_with_hoptoad
18
18
  dj_id = 'unknown'
19
- dj_id = self.dj_object.id if self.dj_object
19
+ if self.dj_object
20
+ dj_id = self.dj_object.id
21
+ self.dj_object.touch(:started_at)
22
+ end
20
23
  begin
21
- Delayed::Worker.logger.info("Starting #{self.class.name}#perform (DJ.id = '#{dj_id}')")
22
- perform_without_hoptoad
23
- Delayed::Worker.logger.info("Completed #{self.class.name}#perform (DJ.id = '#{dj_id}') [SUCCESS]")
24
+ DJ::Worker.logger.info("Starting #{self.class.name}#perform (DJ.id = '#{dj_id}')")
25
+ val = perform_without_hoptoad
26
+ DJ::Worker.logger.info("Completed #{self.class.name}#perform (DJ.id = '#{dj_id}') [SUCCESS]")
27
+ self.dj_object.touch(:finished_at) if self.dj_object
28
+ return val
24
29
  rescue Exception => e
25
30
  notify_hoptoad(e)
26
- Delayed::Worker.logger.info("Halted #{self.class.name}#perform (DJ.id = '#{dj_id}') [FAILURE]")
31
+ DJ::Worker.logger.error("Halted #{self.class.name}#perform (DJ.id = '#{dj_id}') [FAILURE]")
32
+ self.dj_object.update_attributes(:started_at => nil) if self.dj_object
27
33
  raise e
28
34
  end
29
35
  end
@@ -1,4 +1,4 @@
1
- module Delayed
1
+ module DJ
2
2
  class Worker
3
3
 
4
4
  PRIORITY_LEVELS = {:immediate => 10000, :high => 1000, :medium => 500, :normal => 0, :low => -100, :who_cares => -1000}
@@ -35,7 +35,7 @@ module Delayed
35
35
  end
36
36
 
37
37
  def logger
38
- @logger || Delayed::Worker.logger
38
+ @logger || DJ::Worker.logger
39
39
  end
40
40
 
41
41
  def enqueue(priority = self.priority, run_at = self.run_at)
@@ -57,7 +57,7 @@ module Delayed
57
57
  def priority(level = 0)
58
58
  define_method('priority') do
59
59
  if level.is_a?(Symbol)
60
- level = Delayed::Worker::PRIORITY_LEVELS[level] ||= 0
60
+ level = DJ::Worker::PRIORITY_LEVELS[level] ||= 0
61
61
  end
62
62
  return @priority ||= level
63
63
  end
@@ -76,16 +76,22 @@ module Delayed
76
76
  def perform(&block)
77
77
  define_method(:perform) do
78
78
  dj_id = 'unknown'
79
- dj_id = self.dj_object.id if self.dj_object
79
+ if self.dj_object
80
+ dj_id = self.dj_object.id
81
+ self.dj_object.touch(:started_at)
82
+ end
80
83
  begin
81
84
  self.logger.info("Starting #{self.class.name}#perform (DJ.id = '#{dj_id}')")
82
85
  val = self.instance_eval(&block)
83
86
  self.logger.info("Completed #{self.class.name}#perform (DJ.id = '#{dj_id}') [SUCCESS]")
87
+ self.dj_object.touch(:finished_at) if self.dj_object
84
88
  return val
85
89
  rescue Exception => e
90
+ puts e
86
91
  # send to hoptoad!
87
92
  notify_hoptoad(e)
88
- self.logger.info("Halted #{self.class.name}#perform (DJ.id = '#{dj_id}') [FAILURE]")
93
+ self.logger.error("Halted #{self.class.name}#perform (DJ.id = '#{dj_id}') [FAILURE]")
94
+ self.dj_object.update_attributes(:started_at => nil) if self.dj_object
89
95
  raise e
90
96
  end
91
97
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: delayed_job_extras
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.2
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - markbates
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-09-24 00:00:00 -04:00
12
+ date: 2009-09-28 00:00:00 -04:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -40,7 +40,8 @@ files:
40
40
  - README
41
41
  - LICENSE
42
42
  - generators/dj_extras_generator.rb
43
- - generators/templates/migration.rb
43
+ - generators/templates/migrations/001_add_delayed_job_extras.rb
44
+ - generators/templates/migrations/002_add_more_time_columns_to_dj.rb
44
45
  has_rdoc: true
45
46
  homepage: ""
46
47
  licenses: []