supervisor 0.0.95

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.
Files changed (36) hide show
  1. data/.DS_Store +0 -0
  2. data/.gitignore +18 -0
  3. data/Gemfile +4 -0
  4. data/LICENSE.txt +22 -0
  5. data/README.md +57 -0
  6. data/Rakefile +1 -0
  7. data/config.yml +37 -0
  8. data/lib/supervisor.rb +87 -0
  9. data/lib/supervisor/.DS_Store +0 -0
  10. data/lib/supervisor/application/.DS_Store +0 -0
  11. data/lib/supervisor/application/app.rb +186 -0
  12. data/lib/supervisor/application/public/images/poll.png +0 -0
  13. data/lib/supervisor/application/public/javascripts/application.js +64 -0
  14. data/lib/supervisor/application/public/javascripts/jquery-1.7.1.min.js +4 -0
  15. data/lib/supervisor/application/public/javascripts/jquery.relatize_date.js +117 -0
  16. data/lib/supervisor/application/public/stylesheets/reset.css +44 -0
  17. data/lib/supervisor/application/public/stylesheets/style.css +150 -0
  18. data/lib/supervisor/application/views/enqueued.haml +10 -0
  19. data/lib/supervisor/application/views/error.haml +2 -0
  20. data/lib/supervisor/application/views/failed.haml +14 -0
  21. data/lib/supervisor/application/views/job.haml +43 -0
  22. data/lib/supervisor/application/views/layout.haml +23 -0
  23. data/lib/supervisor/application/views/next_more.haml +6 -0
  24. data/lib/supervisor/application/views/overview.haml +111 -0
  25. data/lib/supervisor/application/views/pending.haml +9 -0
  26. data/lib/supervisor/application/views/queue.haml +13 -0
  27. data/lib/supervisor/application/views/servers.haml +16 -0
  28. data/lib/supervisor/application/views/workers.haml +15 -0
  29. data/lib/supervisor/application/views/working.haml +9 -0
  30. data/lib/supervisor/job.rb +7 -0
  31. data/lib/supervisor/server.rb +44 -0
  32. data/lib/supervisor/version.rb +3 -0
  33. data/lib/supervisor/worker.rb +5 -0
  34. data/supervisor.gemspec +27 -0
  35. data/supervisor_app.rb +6 -0
  36. metadata +224 -0
@@ -0,0 +1,9 @@
1
+ %h1
2
+ Pending
3
+ %p.sub
4
+ The list below contains jobs currently being processed.
5
+ %p.sub= "Showing #{start} to #{start + per_page} of #{@all_jobs.count} pending jobs."
6
+ %ul.job
7
+ - @jobs.each do |job|
8
+ = partial :job, {:job => job}
9
+ = partial :next_more, :start => start, :total_size => @all_jobs.count, :per_page => per_page
@@ -0,0 +1,13 @@
1
+ %h1="#{params[:queue].split("_").map(&:capitalize).join(" ")}"
2
+ - if @jobs.any?
3
+ %form{:method => 'POST', :action => u('failed/clear')}
4
+ %input{:type => 'submit', :value => 'Clear Failed Jobs'}
5
+ %form{:method => 'POST', :action => u('update/all')}
6
+ %input{:type => 'submit', :value => 'Retry Failed Jobs'}
7
+ %p.sub
8
+ The list below contains jobs in the #{params[:queue].split("_").map(&:capitalize).join(" ")} queue.
9
+ %p.sub= "Showing #{start} to #{start + per_page} of #{@all_jobs} pending jobs."
10
+ %ul.job
11
+ - @jobs.each do |job|
12
+ = partial :job, {:job => job}
13
+ = partial :next_more, :start => start, :total_size => @all_jobs, :per_page => per_page
@@ -0,0 +1,16 @@
1
+ %h1= @servers.first.name
2
+ / %h1 Servers
3
+ / %p.sub
4
+ / Servers running Delayed Jobs worker daemons
5
+ / - if @servers.any?
6
+ / %ul.server
7
+ / - @servers.each do |server|
8
+ / %li= server.host
9
+ / %li= server.name
10
+ / %li= server.pid
11
+ / %li= server.cpu
12
+ / %li= server.mem
13
+ / %li= server.started
14
+ / %li= server.run_time
15
+ / - else
16
+ / %p There are no Delayed Jobs servers running on any hosts.
@@ -0,0 +1,15 @@
1
+ %h1 Workers
2
+ %p.sub
3
+ Delayed Job workers running on the configured hosts
4
+ - if @workers.any?
5
+ %ul.worker
6
+ - @workers.each do |worker|
7
+ %li= worker.host
8
+ %li= worker.name
9
+ %li= worker.pid
10
+ %li= worker.cpu
11
+ %li= worker.mem
12
+ %li= worker.started
13
+ %li= worker.run_time
14
+ - else
15
+ %p There are no Delayed Jobs workers running on any hosts.
@@ -0,0 +1,9 @@
1
+ %h1
2
+ Working
3
+ %p.sub
4
+ The list below contains jobs currently being processed.
5
+ %p.sub= "Showing #{start} to #{start + per_page} of #{@all_jobs.count} working jobs."
6
+ %ul.job
7
+ - @jobs.each do |job|
8
+ = partial :job, {:job => job}
9
+ = partial :next_more, :start => start, :total_size => @all_jobs.count, :per_page => per_page
@@ -0,0 +1,7 @@
1
+ require 'active_record'
2
+
3
+ module Supervisor
4
+ class Job < ActiveRecord::Base
5
+ self.table_name = "delayed_jobs"
6
+ end
7
+ end
@@ -0,0 +1,44 @@
1
+ require 'hashie'
2
+ require 'net/ssh'
3
+
4
+ module Supervisor
5
+ class Server
6
+ attr_accessor :name,:host,:rails_path,:connection
7
+ @@instance_collector = []
8
+ def initialize(name="default",host="localhost",rails_path=nil,username=nil,password=nil)
9
+ unless host == "localhost"
10
+ p host
11
+ @connection = Net::SSH.start(host,username,:password=>password)
12
+ @username = username
13
+ else
14
+ @connection = nil
15
+ end
16
+ @rails_path = rails_path
17
+ @name = name
18
+ @host = host
19
+ @@instance_collector << self
20
+ end
21
+
22
+ def self.servers
23
+ return @@instance_collector
24
+ end
25
+
26
+ def delayed_job_workers
27
+ @worker_list = []
28
+ if self.connection
29
+ workers = connection.exec!("ps aux").split(/\n/).map{|x| x.split(/\s+/) if x.split(/\s+/).last.match("job")}.compact
30
+ else
31
+ workers = %x{ps aux}.split(/\n/).map{|x| x.split(/\s+/) if x.split(/\s+/).last.match("job")}.compact
32
+ end
33
+ if workers.any?
34
+ workers.each do |wkr|
35
+ @worker_list << Hashie::Mash.new({:host=>host,:name=>wkr.last,:pid=>wkr[1],:cpu=>wkr[2],:mem=>wkr[3],:started=>wkr[8],:run_time=>wkr[9]})
36
+ end
37
+ return @worker_list
38
+ else
39
+ return nil
40
+ end
41
+ end
42
+
43
+ end
44
+ end
@@ -0,0 +1,3 @@
1
+ module Supervisor
2
+ VERSION = "0.0.95"
3
+ end
@@ -0,0 +1,5 @@
1
+ module Supervisor
2
+ class Worker
3
+ #extends the worker daemons
4
+ end
5
+ end
@@ -0,0 +1,27 @@
1
+ # -*- encoding: utf-8 -*-
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'supervisor/version'
5
+
6
+ Gem::Specification.new do |gem|
7
+ gem.name = "supervisor"
8
+ gem.version = Supervisor::VERSION
9
+ gem.authors = ["Dan Barrett"]
10
+ gem.email = ["dbarrett83@gmail.com"]
11
+ gem.description = "Manager for Asynchronous Jobs & Workers"
12
+ gem.summary = "Manager for Asynchronous Jobs & Workerssss FTW"
13
+ gem.homepage = "http://www.github.com/thoughtpunch/supervisor"
14
+ gem.files = `git ls-files`.split($/)
15
+ gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
16
+ gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
17
+ gem.require_paths = ["lib"]
18
+ gem.add_dependency(%q<sinatra>)
19
+ gem.add_dependency(%q<haml>)
20
+ gem.add_dependency(%q<hashie>)
21
+ gem.add_dependency(%q<activerecord>)
22
+ gem.add_dependency(%q<delayed_job>)
23
+ gem.add_dependency(%q<rdoc>)
24
+ gem.add_dependency(%q<bundler>)
25
+ gem.add_dependency(%q<simplecov>)
26
+ gem.add_dependency(%q<rspec>)
27
+ end
@@ -0,0 +1,6 @@
1
+ require 'supervisor'
2
+ begin
3
+ Supervisor.start!
4
+ rescue
5
+ raise "Could not start Supervisor App: #{$!}"
6
+ end
metadata ADDED
@@ -0,0 +1,224 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: supervisor
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.95
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Dan Barrett
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2012-10-17 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: sinatra
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: '0'
30
+ - !ruby/object:Gem::Dependency
31
+ name: haml
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ! '>='
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
38
+ type: :runtime
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
46
+ - !ruby/object:Gem::Dependency
47
+ name: hashie
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ! '>='
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
54
+ type: :runtime
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ - !ruby/object:Gem::Dependency
63
+ name: activerecord
64
+ requirement: !ruby/object:Gem::Requirement
65
+ none: false
66
+ requirements:
67
+ - - ! '>='
68
+ - !ruby/object:Gem::Version
69
+ version: '0'
70
+ type: :runtime
71
+ prerelease: false
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ! '>='
76
+ - !ruby/object:Gem::Version
77
+ version: '0'
78
+ - !ruby/object:Gem::Dependency
79
+ name: delayed_job
80
+ requirement: !ruby/object:Gem::Requirement
81
+ none: false
82
+ requirements:
83
+ - - ! '>='
84
+ - !ruby/object:Gem::Version
85
+ version: '0'
86
+ type: :runtime
87
+ prerelease: false
88
+ version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ! '>='
92
+ - !ruby/object:Gem::Version
93
+ version: '0'
94
+ - !ruby/object:Gem::Dependency
95
+ name: rdoc
96
+ requirement: !ruby/object:Gem::Requirement
97
+ none: false
98
+ requirements:
99
+ - - ! '>='
100
+ - !ruby/object:Gem::Version
101
+ version: '0'
102
+ type: :runtime
103
+ prerelease: false
104
+ version_requirements: !ruby/object:Gem::Requirement
105
+ none: false
106
+ requirements:
107
+ - - ! '>='
108
+ - !ruby/object:Gem::Version
109
+ version: '0'
110
+ - !ruby/object:Gem::Dependency
111
+ name: bundler
112
+ requirement: !ruby/object:Gem::Requirement
113
+ none: false
114
+ requirements:
115
+ - - ! '>='
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :runtime
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ none: false
122
+ requirements:
123
+ - - ! '>='
124
+ - !ruby/object:Gem::Version
125
+ version: '0'
126
+ - !ruby/object:Gem::Dependency
127
+ name: simplecov
128
+ requirement: !ruby/object:Gem::Requirement
129
+ none: false
130
+ requirements:
131
+ - - ! '>='
132
+ - !ruby/object:Gem::Version
133
+ version: '0'
134
+ type: :runtime
135
+ prerelease: false
136
+ version_requirements: !ruby/object:Gem::Requirement
137
+ none: false
138
+ requirements:
139
+ - - ! '>='
140
+ - !ruby/object:Gem::Version
141
+ version: '0'
142
+ - !ruby/object:Gem::Dependency
143
+ name: rspec
144
+ requirement: !ruby/object:Gem::Requirement
145
+ none: false
146
+ requirements:
147
+ - - ! '>='
148
+ - !ruby/object:Gem::Version
149
+ version: '0'
150
+ type: :runtime
151
+ prerelease: false
152
+ version_requirements: !ruby/object:Gem::Requirement
153
+ none: false
154
+ requirements:
155
+ - - ! '>='
156
+ - !ruby/object:Gem::Version
157
+ version: '0'
158
+ description: Manager for Asynchronous Jobs & Workers
159
+ email:
160
+ - dbarrett83@gmail.com
161
+ executables: []
162
+ extensions: []
163
+ extra_rdoc_files: []
164
+ files:
165
+ - .DS_Store
166
+ - .gitignore
167
+ - Gemfile
168
+ - LICENSE.txt
169
+ - README.md
170
+ - Rakefile
171
+ - config.yml
172
+ - lib/supervisor.rb
173
+ - lib/supervisor/.DS_Store
174
+ - lib/supervisor/application/.DS_Store
175
+ - lib/supervisor/application/app.rb
176
+ - lib/supervisor/application/public/images/poll.png
177
+ - lib/supervisor/application/public/javascripts/application.js
178
+ - lib/supervisor/application/public/javascripts/jquery-1.7.1.min.js
179
+ - lib/supervisor/application/public/javascripts/jquery.relatize_date.js
180
+ - lib/supervisor/application/public/stylesheets/reset.css
181
+ - lib/supervisor/application/public/stylesheets/style.css
182
+ - lib/supervisor/application/views/enqueued.haml
183
+ - lib/supervisor/application/views/error.haml
184
+ - lib/supervisor/application/views/failed.haml
185
+ - lib/supervisor/application/views/job.haml
186
+ - lib/supervisor/application/views/layout.haml
187
+ - lib/supervisor/application/views/next_more.haml
188
+ - lib/supervisor/application/views/overview.haml
189
+ - lib/supervisor/application/views/pending.haml
190
+ - lib/supervisor/application/views/queue.haml
191
+ - lib/supervisor/application/views/servers.haml
192
+ - lib/supervisor/application/views/workers.haml
193
+ - lib/supervisor/application/views/working.haml
194
+ - lib/supervisor/job.rb
195
+ - lib/supervisor/server.rb
196
+ - lib/supervisor/version.rb
197
+ - lib/supervisor/worker.rb
198
+ - supervisor.gemspec
199
+ - supervisor_app.rb
200
+ homepage: http://www.github.com/thoughtpunch/supervisor
201
+ licenses: []
202
+ post_install_message:
203
+ rdoc_options: []
204
+ require_paths:
205
+ - lib
206
+ required_ruby_version: !ruby/object:Gem::Requirement
207
+ none: false
208
+ requirements:
209
+ - - ! '>='
210
+ - !ruby/object:Gem::Version
211
+ version: '0'
212
+ required_rubygems_version: !ruby/object:Gem::Requirement
213
+ none: false
214
+ requirements:
215
+ - - ! '>='
216
+ - !ruby/object:Gem::Version
217
+ version: '0'
218
+ requirements: []
219
+ rubyforge_project:
220
+ rubygems_version: 1.8.24
221
+ signing_key:
222
+ specification_version: 3
223
+ summary: Manager for Asynchronous Jobs & Workerssss FTW
224
+ test_files: []