delayed_job_extras 0.2.2 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -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: []