resque_admin-scheduler 1.0.4 → 1.0.5

Sign up to get free protection for your applications and to get access to all the features.
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'