dynamodb-sidekiq-scheduler 0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/CHANGELOG.md +69 -0
- data/MIT-LICENSE +20 -0
- data/README.md +521 -0
- data/Rakefile +29 -0
- data/lib/sidekiq/scheduler.rb +3 -0
- data/lib/sidekiq-scheduler/config.rb +80 -0
- data/lib/sidekiq-scheduler/extensions/schedule.rb +4 -0
- data/lib/sidekiq-scheduler/extensions/web.rb +14 -0
- data/lib/sidekiq-scheduler/job_presenter.rb +74 -0
- data/lib/sidekiq-scheduler/manager.rb +44 -0
- data/lib/sidekiq-scheduler/redis_manager.rb +241 -0
- data/lib/sidekiq-scheduler/rufus_utils.rb +29 -0
- data/lib/sidekiq-scheduler/schedule.rb +154 -0
- data/lib/sidekiq-scheduler/scheduler.rb +356 -0
- data/lib/sidekiq-scheduler/sidekiq_adapter.rb +80 -0
- data/lib/sidekiq-scheduler/utils.rb +143 -0
- data/lib/sidekiq-scheduler/version.rb +3 -0
- data/lib/sidekiq-scheduler/web.rb +105 -0
- data/lib/sidekiq-scheduler.rb +28 -0
- data/web/assets/stylesheets-scheduler/recurring_jobs.css +42 -0
- data/web/locales/cs.yml +14 -0
- data/web/locales/de.yml +16 -0
- data/web/locales/en.yml +23 -0
- data/web/locales/es.yml +14 -0
- data/web/locales/fr.yml +13 -0
- data/web/locales/it.yml +14 -0
- data/web/locales/ja.yml +14 -0
- data/web/locales/nl.yml +14 -0
- data/web/locales/pl.yml +14 -0
- data/web/locales/pt-BR.yml +19 -0
- data/web/locales/ru.yml +16 -0
- data/web/locales/sv.yml +14 -0
- data/web/locales/zh-cn.yml +14 -0
- data/web/views/recurring_job.erb +25 -0
- data/web/views/recurring_jobs.erb +113 -0
- metadata +256 -0
@@ -0,0 +1,28 @@
|
|
1
|
+
require 'sidekiq'
|
2
|
+
require 'tilt/erb'
|
3
|
+
|
4
|
+
require_relative 'sidekiq/scheduler'
|
5
|
+
require_relative 'sidekiq-scheduler/version'
|
6
|
+
require_relative 'sidekiq-scheduler/manager'
|
7
|
+
require_relative 'sidekiq-scheduler/redis_manager'
|
8
|
+
require_relative 'sidekiq-scheduler/config'
|
9
|
+
require_relative 'sidekiq-scheduler/extensions/schedule'
|
10
|
+
require_relative 'sidekiq-scheduler/sidekiq_adapter'
|
11
|
+
|
12
|
+
Sidekiq.configure_server do |config|
|
13
|
+
|
14
|
+
config.on(:startup) do
|
15
|
+
# schedules_changed's type was changed from SET to ZSET, so we remove old versions at startup
|
16
|
+
SidekiqScheduler::RedisManager.clean_schedules_changed
|
17
|
+
|
18
|
+
scheduler_config = SidekiqScheduler::Config.new(sidekiq_config: config)
|
19
|
+
|
20
|
+
schedule_manager = SidekiqScheduler::Manager.new(scheduler_config)
|
21
|
+
SidekiqScheduler::SidekiqAdapter.start_schedule_manager(sidekiq_config: config, schedule_manager: schedule_manager)
|
22
|
+
end
|
23
|
+
|
24
|
+
config.on(:quiet) do
|
25
|
+
SidekiqScheduler::SidekiqAdapter.stop_schedule_manager(sidekiq_config: config)
|
26
|
+
end
|
27
|
+
|
28
|
+
end
|
@@ -0,0 +1,42 @@
|
|
1
|
+
.recurring-jobs { border-top-left-radius: 4px; border-top-right-radius: 4px; }
|
2
|
+
.recurring-jobs .title { margin-bottom: 5px; }
|
3
|
+
.recurring-jobs .title .name { font-weight: bold;}
|
4
|
+
.recurring-jobs .info,
|
5
|
+
.recurring-jobs .description { margin-bottom: 5px; }
|
6
|
+
.recurring-jobs .actions { margin-bottom: 5px; }
|
7
|
+
.recurring-jobs .status,
|
8
|
+
.recurring-jobs .description { font-size: 12px; }
|
9
|
+
.recurring-jobs .enqueue { margin-bottom: 0.5rem }
|
10
|
+
|
11
|
+
.list-group-item {
|
12
|
+
background-color: #f3f3f3;
|
13
|
+
color: #585454;
|
14
|
+
border: 1px solid rgba(0, 0, 0, 0.1);
|
15
|
+
}
|
16
|
+
|
17
|
+
.list-group-item-disabled {
|
18
|
+
background-color: #f3d3d3;
|
19
|
+
}
|
20
|
+
|
21
|
+
@media (prefers-color-scheme: dark) {
|
22
|
+
.list-group-item {
|
23
|
+
background-color: #222;
|
24
|
+
color: white;
|
25
|
+
border: 1px solid #555;
|
26
|
+
}
|
27
|
+
}
|
28
|
+
|
29
|
+
.toggle-all-buttons {
|
30
|
+
margin-top: 20px;
|
31
|
+
margin-bottom: 10px;
|
32
|
+
line-height: 45px;
|
33
|
+
text-align: right;
|
34
|
+
}
|
35
|
+
|
36
|
+
@media (max-width: 768px) {
|
37
|
+
.toggle-all-buttons {
|
38
|
+
margin-top: 0;
|
39
|
+
text-align: left;
|
40
|
+
line-height: inherit;
|
41
|
+
}
|
42
|
+
}
|
data/web/locales/cs.yml
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
cs:
|
2
|
+
recurring_jobs: Pravidelně opakované
|
3
|
+
name: Jméno
|
4
|
+
description: Popis
|
5
|
+
interval: Interval
|
6
|
+
class: Třída
|
7
|
+
queue: Fronta
|
8
|
+
arguments: Argumenty
|
9
|
+
enqueue_now: Zařadit nyní
|
10
|
+
last_time: Naposled
|
11
|
+
next_time: Příště
|
12
|
+
no_next_time: no next execution for this job
|
13
|
+
disable: Zakázat
|
14
|
+
enable: Povolit
|
data/web/locales/de.yml
ADDED
@@ -0,0 +1,16 @@
|
|
1
|
+
de:
|
2
|
+
recurring_jobs: Wiederkehrende Jobs
|
3
|
+
name: Name
|
4
|
+
description: Beschreibung
|
5
|
+
interval: Intervall
|
6
|
+
class: Klasse
|
7
|
+
queue: Warteschlange
|
8
|
+
arguments: Argumente
|
9
|
+
enqueue_now: Jetzt hinzufügen
|
10
|
+
last_time: Letzte Ausführung
|
11
|
+
next_time: Nächste Ausführung
|
12
|
+
no_next_time: Keine zukünftige Ausführung für diesen Job
|
13
|
+
disable: Deaktivieren
|
14
|
+
enable: Aktivieren
|
15
|
+
disable_all: Alle deaktivieren
|
16
|
+
enable_all: Alle aktivieren
|
data/web/locales/en.yml
ADDED
@@ -0,0 +1,23 @@
|
|
1
|
+
en:
|
2
|
+
recurring_jobs: Recurring Jobs
|
3
|
+
name: Name
|
4
|
+
description: Description
|
5
|
+
interval: Interval
|
6
|
+
class: Class
|
7
|
+
queue: Queue
|
8
|
+
arguments: Arguments
|
9
|
+
enqueue_now: Enqueue now
|
10
|
+
last_time: Last Time
|
11
|
+
next_time: Next Time
|
12
|
+
no_next_time: no next execution for this job
|
13
|
+
disable: Disable
|
14
|
+
enable: Enable
|
15
|
+
disable_all: Disable all
|
16
|
+
enable_all: Enable all
|
17
|
+
remove: Remove
|
18
|
+
edit: Edit
|
19
|
+
update: Update
|
20
|
+
new: New
|
21
|
+
cancel: Cancel
|
22
|
+
create: Create
|
23
|
+
|
data/web/locales/es.yml
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
es:
|
2
|
+
recurring_jobs: Tareas Recurrentes
|
3
|
+
name: Nombre
|
4
|
+
description: Descripción
|
5
|
+
interval: Intervalo
|
6
|
+
class: Clase
|
7
|
+
queue: Cola
|
8
|
+
arguments: Argumentos
|
9
|
+
enqueue_now: Encolar ahora
|
10
|
+
last_time: Última ejecución
|
11
|
+
next_time: Próxima ejecución
|
12
|
+
no_next_time: esta tarea no se volverá a ejecutar
|
13
|
+
disable: Inhabilitar
|
14
|
+
enable: Habilitar
|
data/web/locales/fr.yml
ADDED
@@ -0,0 +1,13 @@
|
|
1
|
+
fr:
|
2
|
+
recurring_jobs: Tâches récurrentes
|
3
|
+
name: Nom
|
4
|
+
description: Description
|
5
|
+
interval: Intervalle
|
6
|
+
class: Classe
|
7
|
+
queue: Queue
|
8
|
+
arguments: Arguments
|
9
|
+
enqueue_now: Ajouter à la queue
|
10
|
+
next_time: Quand
|
11
|
+
no_next_time: Pas d'exécution prévue pour cette tâche
|
12
|
+
disable: Désactiver
|
13
|
+
enable: Activer
|
data/web/locales/it.yml
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
it:
|
2
|
+
recurring_jobs: Job ricorrenti
|
3
|
+
name: Nome
|
4
|
+
description: Descrizione
|
5
|
+
interval: Intervallo
|
6
|
+
class: Classe
|
7
|
+
queue: Coda
|
8
|
+
arguments: Argomenti
|
9
|
+
enqueue_now: Accoda ora
|
10
|
+
last_time: Ultima esecuzione
|
11
|
+
next_time: Prossima esecuzione
|
12
|
+
no_next_time: nessuna descrizione per questo Job
|
13
|
+
disable: Disabilita
|
14
|
+
enable: Abilita
|
data/web/locales/ja.yml
ADDED
data/web/locales/nl.yml
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
nl:
|
2
|
+
recurring_jobs: Herhalende taken
|
3
|
+
name: Naam
|
4
|
+
description: Beschrijving
|
5
|
+
interval: Interval
|
6
|
+
class: Klasse
|
7
|
+
queue: Wachtrij
|
8
|
+
arguments: Argumenten
|
9
|
+
enqueue_now: Nu toevoegen
|
10
|
+
last_time: Laatste keer
|
11
|
+
next_time: Volgende keer
|
12
|
+
no_next_time: Geen volgende keer voor deze taak
|
13
|
+
disable: Uitzetten
|
14
|
+
enable: Aanzetten
|
data/web/locales/pl.yml
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
pl:
|
2
|
+
recurring_jobs: Okresowe
|
3
|
+
name: Nazwa
|
4
|
+
description: Opis
|
5
|
+
interval: Interwał
|
6
|
+
class: Klasa
|
7
|
+
queue: Kolejka
|
8
|
+
arguments: Argumenty
|
9
|
+
enqueue_now: Zakolejkuj teraz
|
10
|
+
last_time: Ostatnie wystąpienie
|
11
|
+
next_time: Następne wystąpienie
|
12
|
+
no_next_time: to zadanie nie zostanie już wywołane
|
13
|
+
disable: Wyłącz
|
14
|
+
enable: Włącz
|
@@ -0,0 +1,19 @@
|
|
1
|
+
pt-BR:
|
2
|
+
recurring_jobs: Jobs Recorrentes
|
3
|
+
name: Nome
|
4
|
+
description: Descrição
|
5
|
+
interval: Intervalo
|
6
|
+
class: Classe
|
7
|
+
queue: Fila
|
8
|
+
arguments: Argumentos
|
9
|
+
enqueue_now: Enfileirar agora
|
10
|
+
last_time: Última execução
|
11
|
+
next_time: Próxima execução
|
12
|
+
no_next_time: Não há mais execuçoẽs
|
13
|
+
disable: Desativar
|
14
|
+
enable: Ativar
|
15
|
+
remove: Removee
|
16
|
+
edit: Editar
|
17
|
+
update: Atualiza
|
18
|
+
new: Novo
|
19
|
+
cancel: Cancelar
|
data/web/locales/ru.yml
ADDED
@@ -0,0 +1,16 @@
|
|
1
|
+
ru:
|
2
|
+
recurring_jobs: Расписание задач
|
3
|
+
name: Название
|
4
|
+
description: Описание
|
5
|
+
interval: Интервал
|
6
|
+
class: Класс
|
7
|
+
queue: Очередь
|
8
|
+
arguments: Аргументы
|
9
|
+
enqueue_now: Поставить в очередь
|
10
|
+
last_time: Время последнего выполнения
|
11
|
+
next_time: Время следующего выполнения
|
12
|
+
no_next_time: выполнение задачи не запланировано
|
13
|
+
disable: Выключить
|
14
|
+
enable: Включить
|
15
|
+
disable_all: Выключить все
|
16
|
+
enable_all: Включить все
|
data/web/locales/sv.yml
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
sv:
|
2
|
+
recurring_jobs: Återkommande jobb
|
3
|
+
name: Namn
|
4
|
+
description: Beskrivning
|
5
|
+
interval: Interval
|
6
|
+
class: Klass
|
7
|
+
queue: Kö
|
8
|
+
arguments: Argument
|
9
|
+
enqueue_now: Placera i kö
|
10
|
+
last_time: Senaste gången
|
11
|
+
next_time: Nästa gång
|
12
|
+
no_next_time: inget nästa utförande för detta jobb
|
13
|
+
disable: Inaktivera
|
14
|
+
enable: Aktivera
|
@@ -0,0 +1,25 @@
|
|
1
|
+
<h3>Recurring Job Update</h3>
|
2
|
+
|
3
|
+
<form action="<%= @form_action %>"
|
4
|
+
method="post" class="recurring-job" style="background-color:white;">
|
5
|
+
<%= csrf_tag %>
|
6
|
+
<div style="padding: 20px;">
|
7
|
+
<label for="job_name">Job name:</label><br>
|
8
|
+
<input <%= @existing_rule ? 'disabled' : 'required' %> required name='job_name' type="text"
|
9
|
+
value="<%= @presented_job.name %>" style='width:50%;'/><br>
|
10
|
+
<label for="worker_class" style="padding-top: 10px;">Worker Class:</label><br>
|
11
|
+
<input name='worker_class' required type="text" value="<%= @presented_job['class'] %>" style='width:50%'/><br>
|
12
|
+
<label for="description" style="padding-top: 10px;">Description:</label><br>
|
13
|
+
<input name='description' type="text" value="<%= @presented_job['description'] %>" style='width:50%'/><br>
|
14
|
+
<label for="cron" style="padding-top: 10px;">Cron Rule:</label><br>
|
15
|
+
<input name='cron' type="text" value="<%= @presented_job['cron'] %>" style='width:50%'/><br>
|
16
|
+
<label for="queue" style="padding-top: 10px;">Queue:</label><br>
|
17
|
+
<input name='queue' type="text" value="<%= @presented_job['queue'] %>" style='width:50%'/><br>
|
18
|
+
<label for="args" style="padding-top: 10px;">Args:</label><br>
|
19
|
+
<input name='args' type="text" value="<%= @presented_job['args'] %>" style='width:50%'/><br><br>
|
20
|
+
|
21
|
+
<a href="<%= root_path %>recurring-jobs" class="btn btn-warn btn-xs"><%= t('cancel') %></a>
|
22
|
+
<input type="submit" class="btn btn-warn btn-xs" value="<%= @existing_rule ? t('update') : t('create') %>"/><br>
|
23
|
+
<a></a>
|
24
|
+
</div>
|
25
|
+
</form>
|
@@ -0,0 +1,113 @@
|
|
1
|
+
<%# This view is a copy from the sidekiq web view, with just a few new actions (remove, edit, new) %>
|
2
|
+
<% if Sidekiq::VERSION >= '6.0.0' %>
|
3
|
+
<link href="<%= root_path %>stylesheets-scheduler/recurring_jobs.css" media="screen" rel="stylesheet" type="text/css" />
|
4
|
+
<% else %>
|
5
|
+
<style>
|
6
|
+
.recurring-jobs { border-top-left-radius: 4px; border-top-right-radius: 4px; }
|
7
|
+
.recurring-jobs .title { margin-bottom: 5px; }
|
8
|
+
.recurring-jobs .title .name { font-weight: bold;}
|
9
|
+
.recurring-jobs .info,
|
10
|
+
.recurring-jobs .description { margin-bottom: 5px; }
|
11
|
+
.recurring-jobs .actions { margin-bottom: 5px; }
|
12
|
+
.recurring-jobs .status,
|
13
|
+
.recurring-jobs .description { font-size: 12px; }
|
14
|
+
.recurring-jobs .enqueue { margin-bottom: 0.5rem }
|
15
|
+
|
16
|
+
.list-group-item {
|
17
|
+
background-color: #f3f3f3;
|
18
|
+
color: #585454;
|
19
|
+
border: 1px solid rgba(0, 0, 0, 0.1);
|
20
|
+
}
|
21
|
+
|
22
|
+
.list-group-item-disabled {
|
23
|
+
background-color: #f3d3d3;
|
24
|
+
}
|
25
|
+
|
26
|
+
.toggle-all-buttons {
|
27
|
+
margin-top: 20px;
|
28
|
+
margin-bottom: 10px;
|
29
|
+
line-height: 45px;
|
30
|
+
text-align: right;
|
31
|
+
}
|
32
|
+
|
33
|
+
@media (max-width: 768px) {
|
34
|
+
.toggle-all-buttons {
|
35
|
+
margin-top: 0;
|
36
|
+
text-align: left;
|
37
|
+
line-height: inherit;
|
38
|
+
}
|
39
|
+
}
|
40
|
+
</style>
|
41
|
+
<% end %>
|
42
|
+
|
43
|
+
<div class="row">
|
44
|
+
<div class="col-sm-6">
|
45
|
+
<h3><%= t('recurring_jobs') %></h3>
|
46
|
+
</div>
|
47
|
+
<div class="col-sm-6 toggle-all-buttons">
|
48
|
+
<form action="<%= root_path %>recurring-jobs/toggle-all" method="post">
|
49
|
+
<%= csrf_tag %>
|
50
|
+
<button type="submit" class="btn btn-warn btn-xs" name="action" value="enable"><%= t('enable_all') %></button>
|
51
|
+
<button type="submit" class="btn btn-warn btn-xs" name="action" value="disable"><%= t('disable_all') %></button>
|
52
|
+
</form>
|
53
|
+
<form action="<%= root_path %>recurring-jobs/new" method="post">
|
54
|
+
<%= csrf_tag %>
|
55
|
+
<button type="submit" class="btn btn-warn btn-xs" name="action" value="enable"><%= t('new') %></button>
|
56
|
+
</form>
|
57
|
+
</div>
|
58
|
+
</div>
|
59
|
+
|
60
|
+
<div class="recurring-jobs">
|
61
|
+
<ul class="list-group">
|
62
|
+
<% @presented_jobs.each do |job| %>
|
63
|
+
<li class="list-group-item <%= !job.enabled? && "list-group-item-disabled" %>">
|
64
|
+
<div class="title">
|
65
|
+
<div class="row">
|
66
|
+
<div class="col-xs-6">
|
67
|
+
<span class="name"><%= job.name %></span>
|
68
|
+
</div>
|
69
|
+
<div class="col-xs-6 text-right">
|
70
|
+
<a href="<%= root_path %>queues/<%= job.queue %>"><%= job.queue %></a>
|
71
|
+
</div>
|
72
|
+
</div>
|
73
|
+
</div>
|
74
|
+
<div class="description"><%= job['description'] %></div>
|
75
|
+
<div class="info">
|
76
|
+
<div class="row">
|
77
|
+
<div class="col-md-4 class"><%= job['class'] %></div>
|
78
|
+
<div class="col-md-4 interval text-left"><%= t('interval') %>: <%= job.interval %></div>
|
79
|
+
<div class="col-md-4 args"><%= t('arguments') %>: <%= job['args'] %></div>
|
80
|
+
</div>
|
81
|
+
</div>
|
82
|
+
<div class="status row">
|
83
|
+
<div class="col-md-4 actions">
|
84
|
+
<form action="<%= root_path %>recurring-jobs/<%= ERB::Util.url_encode(job.name) %>/enqueue" method="post" class="enqueue">
|
85
|
+
<%= csrf_tag %>
|
86
|
+
<input type="submit" class="btn btn-warn btn-xs" value="<%= t('enqueue_now') %>" />
|
87
|
+
</form>
|
88
|
+
<form action="<%= root_path %>recurring-jobs/<%= ERB::Util.url_encode(job.name) %>/toggle" method="post">
|
89
|
+
<%= csrf_tag %>
|
90
|
+
<input type="submit" class="btn <%= job.enabled? ? "btn-primary" : "btn-warn"%> btn-xs" value="<%= job.enabled? ? t('disable') : t('enable') %>" />
|
91
|
+
</form>
|
92
|
+
<form action="<%= root_path %>recurring-jobs/<%= ERB::Util.url_encode(job.name) %>/destroy" method="post">
|
93
|
+
<%= csrf_tag %>
|
94
|
+
<input type="submit" class="btn <%= job.enabled? ? "btn-primary" : "btn-warn"%> btn-xs" value="<%= t('remove') %>" />
|
95
|
+
</form>
|
96
|
+
<form action="<%= root_path %>recurring-jobs/<%= ERB::Util.url_encode(job.name) %>/edit" method="post">
|
97
|
+
<%= csrf_tag %>
|
98
|
+
<input type="submit" class="btn <%= job.enabled? ? "btn-primary" : "btn-warn"%> btn-xs" value="<%= t('edit') %>" />
|
99
|
+
</form>
|
100
|
+
</div>
|
101
|
+
<div class="col-md-4">
|
102
|
+
<span class="last_time"><%= t('last_time') %>: <%= job.last_time %></span>
|
103
|
+
</div>
|
104
|
+
<div class="col-md-4">
|
105
|
+
<span class="next_time text-right" style="<%= 'text-decoration:line-through' unless job.enabled? %>">
|
106
|
+
<%= t('next_time') %>: <%= job.next_time || t('no_next_time') %>
|
107
|
+
</span>
|
108
|
+
</div>
|
109
|
+
</div>
|
110
|
+
</li>
|
111
|
+
<% end %>
|
112
|
+
</ul>
|
113
|
+
</div>
|
metadata
ADDED
@@ -0,0 +1,256 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: dynamodb-sidekiq-scheduler
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: '0.2'
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Morton Jonuschat
|
8
|
+
- Moove-it
|
9
|
+
- Marcelo Lauxen
|
10
|
+
autorequire:
|
11
|
+
bindir: bin
|
12
|
+
cert_chain: []
|
13
|
+
date: 2023-03-16 00:00:00.000000000 Z
|
14
|
+
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
16
|
+
name: sidekiq
|
17
|
+
requirement: !ruby/object:Gem::Requirement
|
18
|
+
requirements:
|
19
|
+
- - ">="
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '6'
|
22
|
+
- - "<"
|
23
|
+
- !ruby/object:Gem::Version
|
24
|
+
version: '8'
|
25
|
+
type: :runtime
|
26
|
+
prerelease: false
|
27
|
+
version_requirements: !ruby/object:Gem::Requirement
|
28
|
+
requirements:
|
29
|
+
- - ">="
|
30
|
+
- !ruby/object:Gem::Version
|
31
|
+
version: '6'
|
32
|
+
- - "<"
|
33
|
+
- !ruby/object:Gem::Version
|
34
|
+
version: '8'
|
35
|
+
- !ruby/object:Gem::Dependency
|
36
|
+
name: rufus-scheduler
|
37
|
+
requirement: !ruby/object:Gem::Requirement
|
38
|
+
requirements:
|
39
|
+
- - "~>"
|
40
|
+
- !ruby/object:Gem::Version
|
41
|
+
version: '3.2'
|
42
|
+
type: :runtime
|
43
|
+
prerelease: false
|
44
|
+
version_requirements: !ruby/object:Gem::Requirement
|
45
|
+
requirements:
|
46
|
+
- - "~>"
|
47
|
+
- !ruby/object:Gem::Version
|
48
|
+
version: '3.2'
|
49
|
+
- !ruby/object:Gem::Dependency
|
50
|
+
name: tilt
|
51
|
+
requirement: !ruby/object:Gem::Requirement
|
52
|
+
requirements:
|
53
|
+
- - ">="
|
54
|
+
- !ruby/object:Gem::Version
|
55
|
+
version: 1.4.0
|
56
|
+
type: :runtime
|
57
|
+
prerelease: false
|
58
|
+
version_requirements: !ruby/object:Gem::Requirement
|
59
|
+
requirements:
|
60
|
+
- - ">="
|
61
|
+
- !ruby/object:Gem::Version
|
62
|
+
version: 1.4.0
|
63
|
+
- !ruby/object:Gem::Dependency
|
64
|
+
name: rake
|
65
|
+
requirement: !ruby/object:Gem::Requirement
|
66
|
+
requirements:
|
67
|
+
- - "~>"
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: '12.0'
|
70
|
+
type: :development
|
71
|
+
prerelease: false
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
requirements:
|
74
|
+
- - "~>"
|
75
|
+
- !ruby/object:Gem::Version
|
76
|
+
version: '12.0'
|
77
|
+
- !ruby/object:Gem::Dependency
|
78
|
+
name: timecop
|
79
|
+
requirement: !ruby/object:Gem::Requirement
|
80
|
+
requirements:
|
81
|
+
- - ">="
|
82
|
+
- !ruby/object:Gem::Version
|
83
|
+
version: '0'
|
84
|
+
type: :development
|
85
|
+
prerelease: false
|
86
|
+
version_requirements: !ruby/object:Gem::Requirement
|
87
|
+
requirements:
|
88
|
+
- - ">="
|
89
|
+
- !ruby/object:Gem::Version
|
90
|
+
version: '0'
|
91
|
+
- !ruby/object:Gem::Dependency
|
92
|
+
name: mocha
|
93
|
+
requirement: !ruby/object:Gem::Requirement
|
94
|
+
requirements:
|
95
|
+
- - ">="
|
96
|
+
- !ruby/object:Gem::Version
|
97
|
+
version: '0'
|
98
|
+
type: :development
|
99
|
+
prerelease: false
|
100
|
+
version_requirements: !ruby/object:Gem::Requirement
|
101
|
+
requirements:
|
102
|
+
- - ">="
|
103
|
+
- !ruby/object:Gem::Version
|
104
|
+
version: '0'
|
105
|
+
- !ruby/object:Gem::Dependency
|
106
|
+
name: rspec
|
107
|
+
requirement: !ruby/object:Gem::Requirement
|
108
|
+
requirements:
|
109
|
+
- - ">="
|
110
|
+
- !ruby/object:Gem::Version
|
111
|
+
version: '0'
|
112
|
+
type: :development
|
113
|
+
prerelease: false
|
114
|
+
version_requirements: !ruby/object:Gem::Requirement
|
115
|
+
requirements:
|
116
|
+
- - ">="
|
117
|
+
- !ruby/object:Gem::Version
|
118
|
+
version: '0'
|
119
|
+
- !ruby/object:Gem::Dependency
|
120
|
+
name: simplecov
|
121
|
+
requirement: !ruby/object:Gem::Requirement
|
122
|
+
requirements:
|
123
|
+
- - ">="
|
124
|
+
- !ruby/object:Gem::Version
|
125
|
+
version: '0'
|
126
|
+
type: :development
|
127
|
+
prerelease: false
|
128
|
+
version_requirements: !ruby/object:Gem::Requirement
|
129
|
+
requirements:
|
130
|
+
- - ">="
|
131
|
+
- !ruby/object:Gem::Version
|
132
|
+
version: '0'
|
133
|
+
- !ruby/object:Gem::Dependency
|
134
|
+
name: byebug
|
135
|
+
requirement: !ruby/object:Gem::Requirement
|
136
|
+
requirements:
|
137
|
+
- - ">="
|
138
|
+
- !ruby/object:Gem::Version
|
139
|
+
version: '0'
|
140
|
+
type: :development
|
141
|
+
prerelease: false
|
142
|
+
version_requirements: !ruby/object:Gem::Requirement
|
143
|
+
requirements:
|
144
|
+
- - ">="
|
145
|
+
- !ruby/object:Gem::Version
|
146
|
+
version: '0'
|
147
|
+
- !ruby/object:Gem::Dependency
|
148
|
+
name: activejob
|
149
|
+
requirement: !ruby/object:Gem::Requirement
|
150
|
+
requirements:
|
151
|
+
- - ">="
|
152
|
+
- !ruby/object:Gem::Version
|
153
|
+
version: '0'
|
154
|
+
type: :development
|
155
|
+
prerelease: false
|
156
|
+
version_requirements: !ruby/object:Gem::Requirement
|
157
|
+
requirements:
|
158
|
+
- - ">="
|
159
|
+
- !ruby/object:Gem::Version
|
160
|
+
version: '0'
|
161
|
+
- !ruby/object:Gem::Dependency
|
162
|
+
name: rack-test
|
163
|
+
requirement: !ruby/object:Gem::Requirement
|
164
|
+
requirements:
|
165
|
+
- - ">="
|
166
|
+
- !ruby/object:Gem::Version
|
167
|
+
version: '0'
|
168
|
+
type: :development
|
169
|
+
prerelease: false
|
170
|
+
version_requirements: !ruby/object:Gem::Requirement
|
171
|
+
requirements:
|
172
|
+
- - ">="
|
173
|
+
- !ruby/object:Gem::Version
|
174
|
+
version: '0'
|
175
|
+
- !ruby/object:Gem::Dependency
|
176
|
+
name: rack
|
177
|
+
requirement: !ruby/object:Gem::Requirement
|
178
|
+
requirements:
|
179
|
+
- - "<"
|
180
|
+
- !ruby/object:Gem::Version
|
181
|
+
version: '3'
|
182
|
+
type: :development
|
183
|
+
prerelease: false
|
184
|
+
version_requirements: !ruby/object:Gem::Requirement
|
185
|
+
requirements:
|
186
|
+
- - "<"
|
187
|
+
- !ruby/object:Gem::Version
|
188
|
+
version: '3'
|
189
|
+
description: Light weight job scheduling extension for Sidekiq that adds support for
|
190
|
+
queueing jobs in a recurring way.
|
191
|
+
email:
|
192
|
+
- sidekiq-scheduler@moove-it.com
|
193
|
+
- marcelolauxen16@gmail.com
|
194
|
+
executables: []
|
195
|
+
extensions: []
|
196
|
+
extra_rdoc_files: []
|
197
|
+
files:
|
198
|
+
- CHANGELOG.md
|
199
|
+
- MIT-LICENSE
|
200
|
+
- README.md
|
201
|
+
- Rakefile
|
202
|
+
- lib/sidekiq-scheduler.rb
|
203
|
+
- lib/sidekiq-scheduler/config.rb
|
204
|
+
- lib/sidekiq-scheduler/extensions/schedule.rb
|
205
|
+
- lib/sidekiq-scheduler/extensions/web.rb
|
206
|
+
- lib/sidekiq-scheduler/job_presenter.rb
|
207
|
+
- lib/sidekiq-scheduler/manager.rb
|
208
|
+
- lib/sidekiq-scheduler/redis_manager.rb
|
209
|
+
- lib/sidekiq-scheduler/rufus_utils.rb
|
210
|
+
- lib/sidekiq-scheduler/schedule.rb
|
211
|
+
- lib/sidekiq-scheduler/scheduler.rb
|
212
|
+
- lib/sidekiq-scheduler/sidekiq_adapter.rb
|
213
|
+
- lib/sidekiq-scheduler/utils.rb
|
214
|
+
- lib/sidekiq-scheduler/version.rb
|
215
|
+
- lib/sidekiq-scheduler/web.rb
|
216
|
+
- lib/sidekiq/scheduler.rb
|
217
|
+
- web/assets/stylesheets-scheduler/recurring_jobs.css
|
218
|
+
- web/locales/cs.yml
|
219
|
+
- web/locales/de.yml
|
220
|
+
- web/locales/en.yml
|
221
|
+
- web/locales/es.yml
|
222
|
+
- web/locales/fr.yml
|
223
|
+
- web/locales/it.yml
|
224
|
+
- web/locales/ja.yml
|
225
|
+
- web/locales/nl.yml
|
226
|
+
- web/locales/pl.yml
|
227
|
+
- web/locales/pt-BR.yml
|
228
|
+
- web/locales/ru.yml
|
229
|
+
- web/locales/sv.yml
|
230
|
+
- web/locales/zh-cn.yml
|
231
|
+
- web/views/recurring_job.erb
|
232
|
+
- web/views/recurring_jobs.erb
|
233
|
+
homepage: https://sidekiq-scheduler.github.io/sidekiq-scheduler/
|
234
|
+
licenses:
|
235
|
+
- MIT
|
236
|
+
metadata: {}
|
237
|
+
post_install_message:
|
238
|
+
rdoc_options: []
|
239
|
+
require_paths:
|
240
|
+
- lib
|
241
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
242
|
+
requirements:
|
243
|
+
- - ">="
|
244
|
+
- !ruby/object:Gem::Version
|
245
|
+
version: '2.7'
|
246
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
247
|
+
requirements:
|
248
|
+
- - ">="
|
249
|
+
- !ruby/object:Gem::Version
|
250
|
+
version: '0'
|
251
|
+
requirements: []
|
252
|
+
rubygems_version: 3.1.6
|
253
|
+
signing_key:
|
254
|
+
specification_version: 4
|
255
|
+
summary: Light weight job scheduling extension for Sidekiq
|
256
|
+
test_files: []
|