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.
- data/generators/dj_extras_generator.rb +20 -2
- data/generators/templates/{migration.rb → migrations/001_add_delayed_job_extras.rb} +0 -0
- data/generators/templates/migrations/002_add_more_time_columns_to_dj.rb +11 -0
- data/lib/delayed_job_extras/job.rb +12 -0
- data/lib/delayed_job_extras/performable_method.rb +11 -5
- data/lib/delayed_job_extras/worker.rb +11 -5
- metadata +4 -3
@@ -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
|
-
|
6
|
-
|
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
|
|
File without changes
|
@@ -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
|
-
|
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
|
-
|
22
|
-
perform_without_hoptoad
|
23
|
-
|
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
|
-
|
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
|
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 ||
|
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 =
|
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
|
-
|
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.
|
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.
|
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-
|
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/
|
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: []
|