delayed_job-monitor 0.0.3 → 0.1.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.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.3
1
+ 0.1.0
@@ -1,49 +1,41 @@
1
1
  # Generated by jeweler
2
2
  # DO NOT EDIT THIS FILE DIRECTLY
3
- # Instead, edit Jeweler::Tasks in Rakefile, and run the gemspec command
3
+ # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
4
  # -*- encoding: utf-8 -*-
5
5
 
6
6
  Gem::Specification.new do |s|
7
- s.name = %q{delayed_job-monitor}
8
- s.version = "0.0.3"
7
+ s.name = "delayed_job-monitor"
8
+ s.version = "0.1.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Michael Guterl"]
12
- s.date = %q{2010-06-25}
13
- s.default_executable = %q{delayed_job_monitor}
14
- s.description = %q{A tool for monitoring the health of a delayed_job work queue}
15
- s.email = %q{michael@diminishing.org}
12
+ s.date = "2011-12-30"
13
+ s.description = "A tool for monitoring the health of a delayed_job work queue"
14
+ s.email = "michael@diminishing.org"
16
15
  s.executables = ["delayed_job_monitor"]
17
16
  s.extra_rdoc_files = [
18
17
  "LICENSE",
19
- "README.rdoc"
18
+ "README.rdoc"
20
19
  ]
21
20
  s.files = [
22
21
  ".document",
23
- ".gitignore",
24
- "LICENSE",
25
- "README.rdoc",
26
- "Rakefile",
27
- "VERSION",
28
- "bin/delayed_job_monitor",
29
- "delayed_job-monitor.gemspec",
30
- "lib/delayed_job/monitor.rb",
31
- "spec/delayed_job-monitor_spec.rb",
32
- "spec/spec.opts",
33
- "spec/spec_helper.rb"
34
- ]
35
- s.homepage = %q{http://github.com/recruitmilitary/delayed_job-monitor}
36
- s.rdoc_options = ["--charset=UTF-8"]
37
- s.require_paths = ["lib"]
38
- s.rubygems_version = %q{1.3.7}
39
- s.summary = %q{Monitor the health of your delayed_job work queue}
40
- s.test_files = [
22
+ "LICENSE",
23
+ "README.rdoc",
24
+ "Rakefile",
25
+ "VERSION",
26
+ "bin/delayed_job_monitor",
27
+ "delayed_job-monitor.gemspec",
28
+ "lib/delayed_job/monitor.rb",
41
29
  "spec/delayed_job-monitor_spec.rb",
42
- "spec/spec_helper.rb"
30
+ "spec/spec.opts",
31
+ "spec/spec_helper.rb"
43
32
  ]
33
+ s.homepage = "http://github.com/recruitmilitary/delayed_job-monitor"
34
+ s.require_paths = ["lib"]
35
+ s.rubygems_version = "1.8.10"
36
+ s.summary = "Monitor the health of your delayed_job work queue"
44
37
 
45
38
  if s.respond_to? :specification_version then
46
- current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
47
39
  s.specification_version = 3
48
40
 
49
41
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
@@ -1,64 +1,60 @@
1
1
  require 'sequel'
2
2
  require 'pony'
3
3
 
4
- module Delayed
4
+ class Delayed::Job::Monitor
5
5
 
6
- class Job
6
+ class << self
7
7
 
8
- class Monitor
9
-
10
- class << self
11
-
12
- def run(options)
13
- Delayed::Job::Monitor.new(options).run
14
- end
8
+ def run(options)
9
+ Delayed::Job::Monitor.new(options).run
10
+ end
15
11
 
16
- attr_accessor :default_table_name
12
+ attr_accessor :default_table_name
17
13
 
18
- end
14
+ end
19
15
 
20
- DEFAULT_TABLE_NAME = "delayed_jobs".freeze
16
+ DEFAULT_TABLE_NAME = "delayed_jobs".freeze
21
17
 
22
- self.default_table_name = DEFAULT_TABLE_NAME
18
+ self.default_table_name = DEFAULT_TABLE_NAME
23
19
 
24
- attr_reader :table_name
20
+ attr_reader :table_name
25
21
 
26
- DEFAULT_THRESHOLDS = {
27
- :total_job_threshold => 50,
28
- :failed_job_threshold => 5,
29
- :scheduled_job_threshold => 50,
30
- :waiting_job_threshold => 5,
31
- :running_job_threshold => 10
32
- }.freeze
22
+ DEFAULT_THRESHOLDS = {
23
+ :total_job_threshold => 50,
24
+ :failed_job_threshold => 5,
25
+ :scheduled_job_threshold => 50,
26
+ :waiting_job_threshold => 5,
27
+ :running_job_threshold => 10
28
+ }.freeze
33
29
 
34
- THRESHOLD_ATTRIBUTES = DEFAULT_THRESHOLDS.keys
30
+ THRESHOLD_ATTRIBUTES = DEFAULT_THRESHOLDS.keys
35
31
 
36
- attr_accessor *THRESHOLD_ATTRIBUTES
32
+ attr_accessor *THRESHOLD_ATTRIBUTES
37
33
 
38
- def initialize(options)
39
- @options = options
40
- @db_options = @options[:database]
41
- @table_name = @db_options.delete(:table_name) { Delayed::Job::Monitor.default_table_name }
34
+ def initialize(options)
35
+ @options = options
36
+ @db_options = @options[:database]
37
+ @table_name = @db_options.delete(:table_name) { Delayed::Job::Monitor.default_table_name }
42
38
 
43
- # set thresholds, use default if not provided
44
- DEFAULT_THRESHOLDS.each do |attribute, threshold|
45
- send("#{attribute}=", options.delete(attribute) { threshold })
46
- end
47
- end
39
+ # set thresholds, use default if not provided
40
+ DEFAULT_THRESHOLDS.each do |attribute, threshold|
41
+ send("#{attribute}=", options.delete(attribute) { threshold })
42
+ end
43
+ end
48
44
 
49
- def run
50
- alert if sick?
51
- end
45
+ def run
46
+ alert if sick?
47
+ end
52
48
 
53
- def alert
54
- Pony.mail(:to => "it@recruitmilitary.com",
55
- :from => "deploy@recruitmilitary.com",
56
- :subject => "[Alert] DJ Queue",
57
- :body => alert_body)
58
- end
49
+ def alert
50
+ Pony.mail(:to => "it@recruitmilitary.com",
51
+ :from => "deploy@recruitmilitary.com",
52
+ :subject => "[Alert] DJ Queue",
53
+ :body => alert_body)
54
+ end
59
55
 
60
- def alert_body
61
- %Q{
56
+ def alert_body
57
+ %Q{
62
58
  Delayed::Job Summary
63
59
  --------------------
64
60
 
@@ -68,66 +64,62 @@ Scheduled jobs:\t\t#{scheduled_jobs}
68
64
  Waiting jobs:\t\t#{waiting_jobs}
69
65
  Running jobs:\t\t#{running_jobs}
70
66
  }
71
- end
72
-
73
- def sick?
74
- total_jobs >= total_job_threshold ||
75
- failed_jobs >= failed_job_threshold ||
76
- scheduled_jobs >= scheduled_job_threshold ||
77
- waiting_jobs >= waiting_job_threshold ||
78
- running_jobs >= running_job_threshold
79
- end
80
-
81
- def healthy?
82
- !sick?
83
- end
84
-
85
- def reset
86
- @total_jobs = nil
87
- @scheduled_jobs = nil
88
- @waiting_jobs = nil
89
- @running_jobs = nil
90
- @failed_jobs = nil
91
- end
92
-
93
- def total_jobs
94
- @total_jobs ||= count
95
- end
96
-
97
- def scheduled_jobs
98
- @scheduled_jobs ||= count(["run_at > ? AND locked_at IS NULL AND attempts = 0", Time.now])
99
- end
100
-
101
- def waiting_jobs
102
- @waiting_jobs ||= count(["run_at <= ? AND locked_at IS NULL AND attempts = 0", Time.now])
103
- end
104
-
105
- def running_jobs
106
- @running_jobs ||= count(["locked_at IS NOT NULL"])
107
- end
108
-
109
- def failed_jobs
110
- @failed_jobs ||= count(["(run_at > ? AND last_error IS NOT NULL) OR failed_at IS NOT NULL", Time.now])
111
- end
112
-
113
- def count(filter = nil)
114
- if filter
115
- delayed_jobs.filter(filter).count
116
- else
117
- delayed_jobs.count
118
- end
119
- end
120
-
121
- def delayed_jobs
122
- @delayed_jobs ||= database[table_name.to_sym]
123
- end
124
-
125
- def database
126
- @database ||= Sequel.connect(@db_options)
127
- end
67
+ end
68
+
69
+ def sick?
70
+ total_jobs >= total_job_threshold ||
71
+ failed_jobs >= failed_job_threshold ||
72
+ scheduled_jobs >= scheduled_job_threshold ||
73
+ waiting_jobs >= waiting_job_threshold ||
74
+ running_jobs >= running_job_threshold
75
+ end
76
+
77
+ def healthy?
78
+ !sick?
79
+ end
80
+
81
+ def reset
82
+ @total_jobs = nil
83
+ @scheduled_jobs = nil
84
+ @waiting_jobs = nil
85
+ @running_jobs = nil
86
+ @failed_jobs = nil
87
+ end
88
+
89
+ def total_jobs
90
+ @total_jobs ||= count
91
+ end
92
+
93
+ def scheduled_jobs
94
+ @scheduled_jobs ||= count(["run_at > ? AND locked_at IS NULL AND attempts = 0", Time.now])
95
+ end
96
+
97
+ def waiting_jobs
98
+ @waiting_jobs ||= count(["run_at <= ? AND locked_at IS NULL AND attempts = 0", Time.now])
99
+ end
128
100
 
101
+ def running_jobs
102
+ @running_jobs ||= count(["locked_at IS NOT NULL"])
103
+ end
104
+
105
+ def failed_jobs
106
+ @failed_jobs ||= count(["(run_at > ? AND last_error IS NOT NULL) OR failed_at IS NOT NULL", Time.now])
107
+ end
108
+
109
+ def count(filter = nil)
110
+ if filter
111
+ delayed_jobs.filter(filter).count
112
+ else
113
+ delayed_jobs.count
129
114
  end
115
+ end
116
+
117
+ def delayed_jobs
118
+ @delayed_jobs ||= database[table_name.to_sym]
119
+ end
130
120
 
121
+ def database
122
+ @database ||= Sequel.connect(@db_options)
131
123
  end
132
124
 
133
125
  end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: delayed_job-monitor
3
3
  version: !ruby/object:Gem::Version
4
- hash: 25
5
- prerelease: false
4
+ hash: 27
5
+ prerelease:
6
6
  segments:
7
7
  - 0
8
+ - 1
8
9
  - 0
9
- - 3
10
- version: 0.0.3
10
+ version: 0.1.0
11
11
  platform: ruby
12
12
  authors:
13
13
  - Michael Guterl
@@ -15,8 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2010-06-25 00:00:00 -04:00
19
- default_executable: delayed_job_monitor
18
+ date: 2011-12-30 00:00:00 Z
20
19
  dependencies:
21
20
  - !ruby/object:Gem::Dependency
22
21
  name: rspec
@@ -77,7 +76,6 @@ extra_rdoc_files:
77
76
  - README.rdoc
78
77
  files:
79
78
  - .document
80
- - .gitignore
81
79
  - LICENSE
82
80
  - README.rdoc
83
81
  - Rakefile
@@ -88,13 +86,12 @@ files:
88
86
  - spec/delayed_job-monitor_spec.rb
89
87
  - spec/spec.opts
90
88
  - spec/spec_helper.rb
91
- has_rdoc: true
92
89
  homepage: http://github.com/recruitmilitary/delayed_job-monitor
93
90
  licenses: []
94
91
 
95
92
  post_install_message:
96
- rdoc_options:
97
- - --charset=UTF-8
93
+ rdoc_options: []
94
+
98
95
  require_paths:
99
96
  - lib
100
97
  required_ruby_version: !ruby/object:Gem::Requirement
@@ -118,10 +115,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
118
115
  requirements: []
119
116
 
120
117
  rubyforge_project:
121
- rubygems_version: 1.3.7
118
+ rubygems_version: 1.8.10
122
119
  signing_key:
123
120
  specification_version: 3
124
121
  summary: Monitor the health of your delayed_job work queue
125
- test_files:
126
- - spec/delayed_job-monitor_spec.rb
127
- - spec/spec_helper.rb
122
+ test_files: []
123
+
data/.gitignore DELETED
@@ -1,21 +0,0 @@
1
- ## MAC OS
2
- .DS_Store
3
-
4
- ## TEXTMATE
5
- *.tmproj
6
- tmtags
7
-
8
- ## EMACS
9
- *~
10
- \#*
11
- .\#*
12
-
13
- ## VIM
14
- *.swp
15
-
16
- ## PROJECT::GENERAL
17
- coverage
18
- rdoc
19
- pkg
20
-
21
- ## PROJECT::SPECIFIC