dynamodb-sidekiq-scheduler 0.0.1
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.
- 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 +98 -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 +17 -0
- data/web/views/recurring_jobs.erb +113 -0
- metadata +257 -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,17 @@
|
|
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="name">Name:</label><br>
|
8
|
+
<input <%= @existing_rule ? 'disabled' : 'required' %> required name='name' type="text"
|
9
|
+
value="<%= @name %>" style='width:50%;'/><br>
|
10
|
+
<label for="args" style="padding-top: 10px;">Configuration:</label><br>
|
11
|
+
<textarea name='config' style='width:50%'><%= @config.to_json.html_safe %></textarea><br>
|
12
|
+
<span class="help-block" style='width:50%;'>Example:<br>{"cron":"0 9 * * * America/New_York","class":"NameSpace::WorkerName","args":["arg1","arg2"],"description":"something","queue":"default","enabled":true}</span><br>
|
13
|
+
<a href="<%= root_path %>recurring-jobs" class="btn btn-warn btn-xs"><%= t('cancel') %></a>
|
14
|
+
<input type="submit" class="btn btn-warn btn-xs" value="<%= @existing_rule ? t('update') : t('create') %>"/><br>
|
15
|
+
<a></a>
|
16
|
+
</div>
|
17
|
+
</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,257 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: dynamodb-sidekiq-scheduler
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
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-06-22 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.5'
|
246
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
247
|
+
requirements:
|
248
|
+
- - ">="
|
249
|
+
- !ruby/object:Gem::Version
|
250
|
+
version: '0'
|
251
|
+
requirements: []
|
252
|
+
rubyforge_project:
|
253
|
+
rubygems_version: 2.7.6.2
|
254
|
+
signing_key:
|
255
|
+
specification_version: 4
|
256
|
+
summary: Light weight job scheduling extension for Sidekiq
|
257
|
+
test_files: []
|