resque_admin-scheduler 1.1.6 → 1.1.7

Sign up to get free protection for your applications and to get access to all the features.
Files changed (32) hide show
  1. checksums.yaml +4 -4
  2. data/bin/migrate_to_timestamps_set.rb +16 -0
  3. data/lib/resque_admin-scheduler.rb +4 -0
  4. data/lib/resque_admin/scheduler.rb +447 -0
  5. data/lib/resque_admin/scheduler/cli.rb +147 -0
  6. data/lib/resque_admin/scheduler/configuration.rb +73 -0
  7. data/lib/resque_admin/scheduler/delaying_extensions.rb +324 -0
  8. data/lib/resque_admin/scheduler/env.rb +89 -0
  9. data/lib/resque_admin/scheduler/extension.rb +13 -0
  10. data/lib/resque_admin/scheduler/failure_handler.rb +11 -0
  11. data/lib/resque_admin/scheduler/lock.rb +4 -0
  12. data/lib/resque_admin/scheduler/lock/base.rb +61 -0
  13. data/lib/resque_admin/scheduler/lock/basic.rb +27 -0
  14. data/lib/resque_admin/scheduler/lock/resilient.rb +78 -0
  15. data/lib/resque_admin/scheduler/locking.rb +104 -0
  16. data/lib/resque_admin/scheduler/logger_builder.rb +72 -0
  17. data/lib/resque_admin/scheduler/plugin.rb +31 -0
  18. data/lib/resque_admin/scheduler/scheduling_extensions.rb +141 -0
  19. data/lib/resque_admin/scheduler/server.rb +268 -0
  20. data/lib/resque_admin/scheduler/server/views/delayed.erb +63 -0
  21. data/lib/resque_admin/scheduler/server/views/delayed_schedules.erb +20 -0
  22. data/lib/resque_admin/scheduler/server/views/delayed_timestamp.erb +26 -0
  23. data/lib/resque_admin/scheduler/server/views/requeue-params.erb +23 -0
  24. data/lib/resque_admin/scheduler/server/views/scheduler.erb +58 -0
  25. data/lib/resque_admin/scheduler/server/views/search.erb +72 -0
  26. data/lib/resque_admin/scheduler/server/views/search_form.erb +8 -0
  27. data/lib/resque_admin/scheduler/signal_handling.rb +40 -0
  28. data/lib/resque_admin/scheduler/tasks.rb +25 -0
  29. data/lib/resque_admin/scheduler/util.rb +39 -0
  30. data/lib/resque_admin/scheduler/version.rb +7 -0
  31. data/tasks/resque_admin_scheduler.rake +2 -0
  32. metadata +84 -146
@@ -0,0 +1,20 @@
1
+ <h1>Delayed jobs scheduled for <%= params[:klass] %> (<%= show_job_arguments(@args) %>)</h1>
2
+
3
+ <table class='jobs'>
4
+ <tr>
5
+ <th>Timestamp</th>
6
+ </tr>
7
+
8
+ <% @timestamps.each do |t| %>
9
+ <tr>
10
+ <td>
11
+ <%= Time.at(t) %>
12
+ </td>
13
+ </tr>
14
+ <% end %>
15
+ <% if @timestamps.empty? %>
16
+ <tr>
17
+ <td class='no-data'>There are no such jobs scheduled.</td>
18
+ </tr>
19
+ <% end %>
20
+ </table>
@@ -0,0 +1,26 @@
1
+ <% timestamp = params[:timestamp].to_i %>
2
+
3
+ <h1>Delayed jobs scheduled for <%= format_time(Time.at(timestamp)) %></h1>
4
+
5
+ <p class='sub'>Showing <%= start = params[:start].to_i %> to <%= start + 20 %> of <b><%=size = resque_admin.delayed_timestamp_size(timestamp)%></b> jobs</p>
6
+
7
+ <table class='jobs'>
8
+ <tr>
9
+ <th>Class</th>
10
+ <th>Args</th>
11
+ </tr>
12
+ <% jobs = resque_admin.delayed_timestamp_peek(timestamp, start, 20) %>
13
+ <% jobs.each do |job| %>
14
+ <tr>
15
+ <td class='class'><%= job['class'] %></td>
16
+ <td class='args'><%=h show_job_arguments(job['args']) %></td>
17
+ </tr>
18
+ <% end %>
19
+ <% if jobs.empty? %>
20
+ <tr>
21
+ <td class='no-data' colspan='2'>There are no pending jobs scheduled for this time.</td>
22
+ </tr>
23
+ <% end %>
24
+ </table>
25
+
26
+ <%= partial :next_more, :start => start, :size => size %>
@@ -0,0 +1,23 @@
1
+ <h1><%= @job_name %></h1>
2
+
3
+ <p class='intro'>
4
+ This job requires parameters:
5
+ </p>
6
+
7
+ <form style="float:left" action="<%= u "/schedule/requeue_with_params" %>" method="post">
8
+ <table>
9
+ <% @parameters.each do |key, value| %>
10
+ <% value ||= {} %>
11
+ <tr>
12
+ <td>
13
+ <%= key %>
14
+ <% if value['description'] || value[:description] %>
15
+ <span style="border-bottom:1px dotted;" title="<%=value ['description'] || value[:description] %>">(?)</span>
16
+ <% end %>:
17
+ </td>
18
+ <td><input type="text" name="<%= key %>" value="<%= value['default'] || value[:default] %>"></td>
19
+ <% end %>
20
+ </table>
21
+ <input type="hidden" name="job_name" value="<%= @job_name %>">
22
+ <input type="submit" value="Queue now">
23
+ </form>
@@ -0,0 +1,58 @@
1
+ <h1>Schedule</h1>
2
+
3
+ <p class='intro'>
4
+ The list below contains all scheduled jobs. Click &quot;Queue now&quot; to queue
5
+ a job immediately.
6
+ <br/> Server local time: <%= Time.now %>
7
+ <br/> Server Environment: <%= ResqueAdmin::Scheduler.env %>
8
+ <br/> Current master: <%= ResqueAdmin.redis.get(ResqueAdmin::Scheduler.master_lock.key) %>
9
+ </p>
10
+ <p class='intro'>
11
+ The highlighted jobs are skipped for current environment.
12
+ </p>
13
+ <div style="overflow-y: auto; width:100%; padding: 0px 5px;">
14
+ <table>
15
+ <tr>
16
+ <th>Index</th>
17
+ <% if ResqueAdmin::Scheduler.dynamic %>
18
+ <th></th>
19
+ <% end %>
20
+ <th></th>
21
+ <th>Name</th>
22
+ <th>Description</th>
23
+ <th>Interval</th>
24
+ <th>Class</th>
25
+ <th>Queue</th>
26
+ <th>Arguments</th>
27
+ <th>Last Enqueued</th>
28
+ </tr>
29
+ <% ResqueAdmin.schedule.keys.sort.each_with_index do |name, index| %>
30
+ <% config = ResqueAdmin.schedule[name] %>
31
+ <tr style="<%= scheduled_in_this_env?(name) ? '' : 'color: #9F6000;background: #FEEFB3;' %>">
32
+ <td style="padding-left: 15px;"><%= index+ 1 %>.</td>
33
+ <% if ResqueAdmin::Scheduler.dynamic %>
34
+ <td style="padding-top: 12px; padding-bottom: 2px; width: 10px">
35
+ <form action="<%= u "/schedule" %>" method="post" style="margin-left: 0">
36
+ <input type="hidden" name="job_name" value="<%= h name %>">
37
+ <input type="hidden" name="_method" value="delete">
38
+ <input type="submit" value="Delete">
39
+ </form>
40
+ </td>
41
+ <% end %>
42
+ <td style="padding-top: 12px; padding-bottom: 2px; width: 10px">
43
+ <form action="<%= u "/schedule/requeue" %>" method="post" style="margin-left: 0">
44
+ <input type="hidden" name="job_name" value="<%= h name %>">
45
+ <input type="submit" value="Queue now">
46
+ </form>
47
+ </td>
48
+ <td><%= h name %></td>
49
+ <td><%= h config['description'] %></td>
50
+ <td style="white-space:nowrap"><%= h schedule_interval(config) %></td>
51
+ <td><%= h schedule_class(config) %></td>
52
+ <td><%= h config['queue'] || queue_from_class_name(config['class']) %></td>
53
+ <td><%= h show_job_arguments(config['args']) %></td>
54
+ <td><%= h ResqueAdmin.get_last_enqueued_at(name) || 'Never' %></td>
55
+ </tr>
56
+ <% end %>
57
+ </table>
58
+ </div>
@@ -0,0 +1,72 @@
1
+ <h1>Search Results</h1>
2
+ <%= scheduler_view :search_form, layout: false %>
3
+ <hr>
4
+ <% delayed = @jobs.select { |j| j['where_at'] == 'delayed' } %>
5
+ <h1>Delayed jobs</h1>
6
+ <table class='jobs'>
7
+ <tr>
8
+ <th></th>
9
+ <th></th>
10
+ <th>Timestamp</th>
11
+ <th>Class</th>
12
+ <th>Args</th>
13
+ </tr>
14
+ <% delayed.each do |job| %>
15
+ <tr>
16
+ <td>
17
+ <form action="<%= u "/delayed/queue_now" %>" method="post">
18
+ <input type="hidden" name="timestamp" value="<%= job['timestamp'].to_i %>">
19
+ <input type="submit" value="Queue now">
20
+ </form>
21
+ </td>
22
+ <td>
23
+ <form action="<%= u "/delayed/cancel_now" %>" method="post">
24
+ <input type="hidden" name="timestamp" value="<%= job['timestamp'].to_i %>">
25
+ <input type="hidden" name="klass" value="<%= job['class'] %>">
26
+ <input type="hidden" name="args" value="<%= h(ResqueAdmin.encode job['args']) %>">
27
+ <input type="submit" value="Cancel Job">
28
+ </form>
29
+ </td>
30
+ <td class='args'><%= format_time(Time.at(job['timestamp'])) %></td>
31
+ <td class='class'><%= job['class'] %></td>
32
+ <td class='args'><%= h job['args'].inspect %></td>
33
+ </tr>
34
+ <% end %>
35
+ </table>
36
+ </h1>
37
+
38
+ <% queued = @jobs.select { |j| j['where_at'] == 'queued' } %>
39
+ <h1>Queued jobs</h1>
40
+ <table class='jobs'>
41
+ <tr>
42
+ <th>Queue</th>
43
+ <th>Class</th>
44
+ <th>Args</th>
45
+ </tr>
46
+ <% queued.each do |job| %>
47
+ <tr>
48
+ <td class='class'><%= job['queue'] %></td>
49
+ <td class='class'><%= job['class'] %></td>
50
+ <td class='args'><%= h job['args'].inspect %></td>
51
+ </tr>
52
+ <% end %>
53
+ </table>
54
+
55
+ <% working = @jobs.select { |j| j['where_at'] == 'working' } %>
56
+ <h1>Working jobs</h1>
57
+ <table class='jobs'>
58
+ <tr>
59
+ <th>Queue</th>
60
+ <th>Class</th>
61
+ <th>Args</th>
62
+ </tr>
63
+ <% working.each do |job| %>
64
+ <tr>
65
+ <td class='class'><%= job['queue'] %></td>
66
+ <td class='class'><%= job['class'] %></td>
67
+ <td class='args'><%= h job['args'].inspect %></td>
68
+ </tr>
69
+ <% end %>
70
+ </table>
71
+
72
+
@@ -0,0 +1,8 @@
1
+ <form method="POST" action="<%= u 'delayed/search' %>">
2
+ <input type='input' name='search' value="<%= params[:search] %>"/>
3
+ <input type='submit' value='Search'/>
4
+ </form>
5
+
6
+
7
+
8
+
@@ -0,0 +1,40 @@
1
+ # vim:fileencoding=utf-8
2
+
3
+ module ResqueAdmin
4
+ module Scheduler
5
+ module SignalHandling
6
+ attr_writer :signal_queue
7
+
8
+ def signal_queue
9
+ @signal_queue ||= []
10
+ end
11
+
12
+ # For all signals, set the shutdown flag and wait for current
13
+ # poll/enqueing to finish (should be almost instant). In the
14
+ # case of sleeping, exit immediately.
15
+ def register_signal_handlers
16
+ (Signal.list.keys & %w(INT TERM USR1 USR2 QUIT)).each do |sig|
17
+ trap(sig) do
18
+ signal_queue << sig
19
+ # break sleep in the primary scheduler thread, alowing
20
+ # the signal queue to get processed as soon as possible.
21
+ @th.wakeup if @th && @th.alive?
22
+ end
23
+ end
24
+ end
25
+
26
+ def handle_signals
27
+ loop do
28
+ sig = signal_queue.shift
29
+ break unless sig
30
+ log! "Got #{sig} signal"
31
+ case sig
32
+ when 'INT', 'TERM', 'QUIT' then shutdown
33
+ when 'USR1' then print_schedule
34
+ when 'USR2' then reload_schedule!
35
+ end
36
+ end
37
+ end
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,25 @@
1
+ # vim:fileencoding=utf-8
2
+
3
+ require 'resque_admin/tasks'
4
+ require 'resque_admin-scheduler'
5
+
6
+ namespace :resque_admin do
7
+ task :setup
8
+
9
+ def scheduler_cli
10
+ @scheduler_cli ||= ResqueAdmin::Scheduler::Cli.new(
11
+ %W(#{ENV['RESQUE_SCHEDULER_OPTIONS']})
12
+ )
13
+ end
14
+
15
+ desc 'Start ResqueAdmin Scheduler'
16
+ task scheduler: :scheduler_setup do
17
+ scheduler_cli.setup_env
18
+ scheduler_cli.run_forever
19
+ end
20
+
21
+ task :scheduler_setup do
22
+ scheduler_cli.parse_options
23
+ Rake::Task['resque_admin:setup'].invoke unless scheduler_cli.pre_setup
24
+ end
25
+ end
@@ -0,0 +1,39 @@
1
+ # vim:fileencoding=utf-8
2
+
3
+ module ResqueAdmin
4
+ module Scheduler
5
+ class Util
6
+ # In order to upgrade to resque_admin(1.25) which has deprecated following
7
+ # methods, we just added these usefull helpers back to use in ResqueAdmin
8
+ # Scheduler. refer to:
9
+ # https://github.com/resque_admin/resque_admin-scheduler/pull/273
10
+
11
+ def self.constantize(camel_cased_word)
12
+ camel_cased_word = camel_cased_word.to_s
13
+
14
+ if camel_cased_word.include?('-')
15
+ camel_cased_word = classify(camel_cased_word)
16
+ end
17
+
18
+ names = camel_cased_word.split('::')
19
+ names.shift if names.empty? || names.first.empty?
20
+
21
+ constant = Object
22
+ names.each do |name|
23
+ args = Module.method(:const_get).arity != 1 ? [false] : []
24
+
25
+ constant = if constant.const_defined?(name, *args)
26
+ constant.const_get(name)
27
+ else
28
+ constant.const_missing(name)
29
+ end
30
+ end
31
+ constant
32
+ end
33
+
34
+ def self.classify(dashed_word)
35
+ dashed_word.split('-').map(&:capitalize).join
36
+ end
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,7 @@
1
+ # vim:fileencoding=utf-8
2
+
3
+ module ResqueAdmin
4
+ module Scheduler
5
+ VERSION = '1.1.7'.freeze
6
+ end
7
+ end
@@ -0,0 +1,2 @@
1
+ $LOAD_PATH.unshift File.dirname(__FILE__) + '/../lib'
2
+ require 'resque_admin/scheduler/tasks'
metadata CHANGED
@@ -1,202 +1,140 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: resque_admin-scheduler
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.6
4
+ version: 1.1.7
5
5
  platform: ruby
6
6
  authors:
7
- - Ben VandenBos
8
- - Simon Eskildsen
9
- - Ryan Biesemeyer
10
- - Dan Buch
7
+ - Chris Wanstrath
8
+ - Steve Klabnik
9
+ - Terence Lee
11
10
  autorequire:
12
- bindir: exe
11
+ bindir: bin
13
12
  cert_chain: []
14
13
  date: 2017-10-17 00:00:00.000000000 Z
15
14
  dependencies:
16
15
  - !ruby/object:Gem::Dependency
17
- name: bundler
16
+ name: redis-namespace
18
17
  requirement: !ruby/object:Gem::Requirement
19
18
  requirements:
20
- - - ">="
21
- - !ruby/object:Gem::Version
22
- version: '0'
23
- type: :development
24
- prerelease: false
25
- version_requirements: !ruby/object:Gem::Requirement
26
- requirements:
27
- - - ">="
28
- - !ruby/object:Gem::Version
29
- version: '0'
30
- - !ruby/object:Gem::Dependency
31
- name: json
32
- requirement: !ruby/object:Gem::Requirement
33
- requirements:
34
- - - ">="
35
- - !ruby/object:Gem::Version
36
- version: '0'
37
- type: :development
38
- prerelease: false
39
- version_requirements: !ruby/object:Gem::Requirement
40
- requirements:
41
- - - ">="
42
- - !ruby/object:Gem::Version
43
- version: '0'
44
- - !ruby/object:Gem::Dependency
45
- name: kramdown
46
- requirement: !ruby/object:Gem::Requirement
47
- requirements:
48
- - - ">="
49
- - !ruby/object:Gem::Version
50
- version: '0'
51
- type: :development
52
- prerelease: false
53
- version_requirements: !ruby/object:Gem::Requirement
54
- requirements:
55
- - - ">="
56
- - !ruby/object:Gem::Version
57
- version: '0'
58
- - !ruby/object:Gem::Dependency
59
- name: minitest
60
- requirement: !ruby/object:Gem::Requirement
61
- requirements:
62
- - - ">="
63
- - !ruby/object:Gem::Version
64
- version: '0'
65
- type: :development
66
- prerelease: false
67
- version_requirements: !ruby/object:Gem::Requirement
68
- requirements:
69
- - - ">="
70
- - !ruby/object:Gem::Version
71
- version: '0'
72
- - !ruby/object:Gem::Dependency
73
- name: mocha
74
- requirement: !ruby/object:Gem::Requirement
75
- requirements:
76
- - - ">="
77
- - !ruby/object:Gem::Version
78
- version: '0'
79
- type: :development
80
- prerelease: false
81
- version_requirements: !ruby/object:Gem::Requirement
82
- requirements:
83
- - - ">="
84
- - !ruby/object:Gem::Version
85
- version: '0'
86
- - !ruby/object:Gem::Dependency
87
- name: pry
88
- requirement: !ruby/object:Gem::Requirement
89
- requirements:
90
- - - ">="
19
+ - - "~>"
91
20
  - !ruby/object:Gem::Version
92
- version: '0'
93
- type: :development
21
+ version: '1.3'
22
+ type: :runtime
94
23
  prerelease: false
95
24
  version_requirements: !ruby/object:Gem::Requirement
96
25
  requirements:
97
- - - ">="
26
+ - - "~>"
98
27
  - !ruby/object:Gem::Version
99
- version: '0'
28
+ version: '1.3'
100
29
  - !ruby/object:Gem::Dependency
101
- name: rack-test
30
+ name: vegas
102
31
  requirement: !ruby/object:Gem::Requirement
103
32
  requirements:
104
- - - ">="
33
+ - - "~>"
105
34
  - !ruby/object:Gem::Version
106
- version: '0'
107
- type: :development
35
+ version: 0.1.2
36
+ type: :runtime
108
37
  prerelease: false
109
38
  version_requirements: !ruby/object:Gem::Requirement
110
39
  requirements:
111
- - - ">="
40
+ - - "~>"
112
41
  - !ruby/object:Gem::Version
113
- version: '0'
42
+ version: 0.1.2
114
43
  - !ruby/object:Gem::Dependency
115
- name: rake
44
+ name: sinatra
116
45
  requirement: !ruby/object:Gem::Requirement
117
46
  requirements:
118
47
  - - ">="
119
48
  - !ruby/object:Gem::Version
120
- version: '0'
121
- type: :development
49
+ version: 0.9.2
50
+ type: :runtime
122
51
  prerelease: false
123
52
  version_requirements: !ruby/object:Gem::Requirement
124
53
  requirements:
125
54
  - - ">="
126
55
  - !ruby/object:Gem::Version
127
- version: '0'
56
+ version: 0.9.2
128
57
  - !ruby/object:Gem::Dependency
129
- name: simplecov
58
+ name: multi_json
130
59
  requirement: !ruby/object:Gem::Requirement
131
60
  requirements:
132
- - - ">="
61
+ - - "~>"
133
62
  - !ruby/object:Gem::Version
134
- version: '0'
135
- type: :development
63
+ version: '1.0'
64
+ type: :runtime
136
65
  prerelease: false
137
66
  version_requirements: !ruby/object:Gem::Requirement
138
67
  requirements:
139
- - - ">="
68
+ - - "~>"
140
69
  - !ruby/object:Gem::Version
141
- version: '0'
70
+ version: '1.0'
142
71
  - !ruby/object:Gem::Dependency
143
- name: test-unit
72
+ name: mono_logger
144
73
  requirement: !ruby/object:Gem::Requirement
145
74
  requirements:
146
- - - ">="
75
+ - - "~>"
147
76
  - !ruby/object:Gem::Version
148
- version: '0'
149
- type: :development
77
+ version: '1.0'
78
+ type: :runtime
150
79
  prerelease: false
151
80
  version_requirements: !ruby/object:Gem::Requirement
152
81
  requirements:
153
- - - ">="
154
- - !ruby/object:Gem::Version
155
- version: '0'
156
- - !ruby/object:Gem::Dependency
157
- name: yard
158
- requirement: !ruby/object:Gem::Requirement
159
- requirements:
160
- - - ">="
161
- - !ruby/object:Gem::Version
162
- version: '0'
163
- type: :development
164
- prerelease: false
165
- version_requirements: !ruby/object:Gem::Requirement
166
- requirements:
167
- - - ">="
168
- - !ruby/object:Gem::Version
169
- version: '0'
170
- - !ruby/object:Gem::Dependency
171
- name: tzinfo-data
172
- requirement: !ruby/object:Gem::Requirement
173
- requirements:
174
- - - ">="
175
- - !ruby/object:Gem::Version
176
- version: '0'
177
- type: :development
178
- prerelease: false
179
- version_requirements: !ruby/object:Gem::Requirement
180
- requirements:
181
- - - ">="
82
+ - - "~>"
182
83
  - !ruby/object:Gem::Version
183
- version: '0'
84
+ version: '1.0'
184
85
  description: |2
185
- Light weight job scheduling on top of Resque.
186
- Adds methods enqueue_at/enqueue_in to schedule jobs in the future.
187
- Also supports queueing jobs on a fixed, cron-like schedule.
188
- email:
189
- - bvandenbos@gmail.com
190
- - sirup@sirupsen.com
191
- - ryan@yaauie.com
192
- - dan@meatballhat.com
193
- executables: []
86
+ ResqueAdmin is a Redis-backed Ruby library for creating background jobs,
87
+ placing those jobs on multiple queues, and processing them later.
88
+
89
+ Background jobs can be any Ruby class or module that responds to
90
+ perform. Your existing classes can easily be converted to background
91
+ jobs or you can create new classes specifically to do work. Or, you
92
+ can do both.
93
+
94
+ ResqueAdmin is heavily inspired by DelayedJob (which rocks) and is
95
+ comprised of three parts:
96
+
97
+ * A Ruby library for creating, querying, and processing jobs
98
+ * A Rake task for starting a worker which processes jobs
99
+ * A Sinatra app for monitoring queues, jobs, and workers.
100
+ email: steve@steveklabnik.com
101
+ executables:
102
+ - migrate_to_timestamps_set.rb
194
103
  extensions: []
195
104
  extra_rdoc_files: []
196
- files: []
197
- homepage: http://github.com/resque/resque-scheduler
198
- licenses:
199
- - MIT
105
+ files:
106
+ - bin/migrate_to_timestamps_set.rb
107
+ - lib/resque_admin-scheduler.rb
108
+ - lib/resque_admin/scheduler.rb
109
+ - lib/resque_admin/scheduler/cli.rb
110
+ - lib/resque_admin/scheduler/configuration.rb
111
+ - lib/resque_admin/scheduler/delaying_extensions.rb
112
+ - lib/resque_admin/scheduler/env.rb
113
+ - lib/resque_admin/scheduler/extension.rb
114
+ - lib/resque_admin/scheduler/failure_handler.rb
115
+ - lib/resque_admin/scheduler/lock.rb
116
+ - lib/resque_admin/scheduler/lock/base.rb
117
+ - lib/resque_admin/scheduler/lock/basic.rb
118
+ - lib/resque_admin/scheduler/lock/resilient.rb
119
+ - lib/resque_admin/scheduler/locking.rb
120
+ - lib/resque_admin/scheduler/logger_builder.rb
121
+ - lib/resque_admin/scheduler/plugin.rb
122
+ - lib/resque_admin/scheduler/scheduling_extensions.rb
123
+ - lib/resque_admin/scheduler/server.rb
124
+ - lib/resque_admin/scheduler/server/views/delayed.erb
125
+ - lib/resque_admin/scheduler/server/views/delayed_schedules.erb
126
+ - lib/resque_admin/scheduler/server/views/delayed_timestamp.erb
127
+ - lib/resque_admin/scheduler/server/views/requeue-params.erb
128
+ - lib/resque_admin/scheduler/server/views/scheduler.erb
129
+ - lib/resque_admin/scheduler/server/views/search.erb
130
+ - lib/resque_admin/scheduler/server/views/search_form.erb
131
+ - lib/resque_admin/scheduler/signal_handling.rb
132
+ - lib/resque_admin/scheduler/tasks.rb
133
+ - lib/resque_admin/scheduler/util.rb
134
+ - lib/resque_admin/scheduler/version.rb
135
+ - tasks/resque_admin_scheduler.rake
136
+ homepage: http://resque.github.io/
137
+ licenses: []
200
138
  metadata: {}
201
139
  post_install_message:
202
140
  rdoc_options: []
@@ -217,5 +155,5 @@ rubyforge_project:
217
155
  rubygems_version: 2.6.10
218
156
  signing_key:
219
157
  specification_version: 4
220
- summary: Light weight job scheduling on top of Resque
158
+ summary: ResqueAdmin is a Redis-backed queueing system.
221
159
  test_files: []