resque_admin-scheduler 1.1.6 → 1.1.7

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 (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: []