resque_admin-scheduler 1.0.4 → 1.0.5

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 (33) hide show
  1. checksums.yaml +4 -4
  2. metadata +63 -39
  3. data/bin/migrate_to_timestamps_set.rb +0 -16
  4. data/exe/resque-scheduler +0 -5
  5. data/lib/resque-scheduler.rb +0 -4
  6. data/lib/resque_admin/scheduler.rb +0 -447
  7. data/lib/resque_admin/scheduler/cli.rb +0 -147
  8. data/lib/resque_admin/scheduler/configuration.rb +0 -73
  9. data/lib/resque_admin/scheduler/delaying_extensions.rb +0 -324
  10. data/lib/resque_admin/scheduler/env.rb +0 -89
  11. data/lib/resque_admin/scheduler/extension.rb +0 -13
  12. data/lib/resque_admin/scheduler/failure_handler.rb +0 -11
  13. data/lib/resque_admin/scheduler/lock.rb +0 -4
  14. data/lib/resque_admin/scheduler/lock/base.rb +0 -61
  15. data/lib/resque_admin/scheduler/lock/basic.rb +0 -27
  16. data/lib/resque_admin/scheduler/lock/resilient.rb +0 -78
  17. data/lib/resque_admin/scheduler/locking.rb +0 -104
  18. data/lib/resque_admin/scheduler/logger_builder.rb +0 -72
  19. data/lib/resque_admin/scheduler/plugin.rb +0 -31
  20. data/lib/resque_admin/scheduler/scheduling_extensions.rb +0 -141
  21. data/lib/resque_admin/scheduler/server.rb +0 -268
  22. data/lib/resque_admin/scheduler/server/views/delayed.erb +0 -63
  23. data/lib/resque_admin/scheduler/server/views/delayed_schedules.erb +0 -20
  24. data/lib/resque_admin/scheduler/server/views/delayed_timestamp.erb +0 -26
  25. data/lib/resque_admin/scheduler/server/views/requeue-params.erb +0 -23
  26. data/lib/resque_admin/scheduler/server/views/scheduler.erb +0 -58
  27. data/lib/resque_admin/scheduler/server/views/search.erb +0 -72
  28. data/lib/resque_admin/scheduler/server/views/search_form.erb +0 -8
  29. data/lib/resque_admin/scheduler/signal_handling.rb +0 -40
  30. data/lib/resque_admin/scheduler/tasks.rb +0 -25
  31. data/lib/resque_admin/scheduler/util.rb +0 -39
  32. data/lib/resque_admin/scheduler/version.rb +0 -7
  33. data/tasks/resque_scheduler.rake +0 -2
@@ -1,20 +0,0 @@
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>
@@ -1,26 +0,0 @@
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.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.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 %>
@@ -1,23 +0,0 @@
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>
@@ -1,58 +0,0 @@
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>
@@ -1,72 +0,0 @@
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
-
@@ -1,8 +0,0 @@
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
-
@@ -1,40 +0,0 @@
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
@@ -1,25 +0,0 @@
1
- # vim:fileencoding=utf-8
2
-
3
- require 'resque_admin/tasks'
4
- require 'resque-scheduler'
5
-
6
- namespace :resque 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:setup'].invoke unless scheduler_cli.pre_setup
24
- end
25
- end
@@ -1,39 +0,0 @@
1
- # vim:fileencoding=utf-8
2
-
3
- module ResqueAdmin
4
- module Scheduler
5
- class Util
6
- # In order to upgrade to resque(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/resque-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
@@ -1,7 +0,0 @@
1
- # vim:fileencoding=utf-8
2
-
3
- module ResqueAdmin
4
- module Scheduler
5
- VERSION = '1.0.4'.freeze
6
- end
7
- end
@@ -1,2 +0,0 @@
1
- $LOAD_PATH.unshift File.dirname(__FILE__) + '/../lib'
2
- require 'resque_admin/scheduler/tasks'