Skip to content

Commit 24a94c4

Browse files
committed
feat(sidekiq): sidekiq-scheduler
1 parent 70936e8 commit 24a94c4

File tree

7 files changed

+55
-27
lines changed

7 files changed

+55
-27
lines changed

Gemfile

+1-1
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ gem 'turbolinks', '~> 5'
3737
# background jobs
3838
gem 'sidekiq'
3939
gem 'sidekiq-limit_fetch'
40-
gem 'sidetiq'
40+
gem 'sidekiq-scheduler'
4141
gem 'sinatra', '~> 2.0.0.beta2'
4242

4343
# file upload

Gemfile.lock

+10-26
Original file line numberDiff line numberDiff line change
@@ -111,23 +111,6 @@ GEM
111111
activemodel (>= 4.0.0)
112112
activesupport (>= 4.0.0)
113113
mime-types (>= 1.16)
114-
celluloid (0.17.3)
115-
celluloid-essentials
116-
celluloid-extras
117-
celluloid-fsm
118-
celluloid-pool
119-
celluloid-supervision
120-
timers (>= 4.1.1)
121-
celluloid-essentials (0.20.5)
122-
timers (>= 4.1.1)
123-
celluloid-extras (0.20.5)
124-
timers (>= 4.1.1)
125-
celluloid-fsm (0.20.5)
126-
timers (>= 4.1.1)
127-
celluloid-pool (0.20.5)
128-
timers (>= 4.1.1)
129-
celluloid-supervision (0.20.6)
130-
timers (>= 4.1.1)
131114
coffee-rails (4.2.2)
132115
coffee-script (>= 2.2.0)
133116
railties (>= 4.0.0)
@@ -156,6 +139,8 @@ GEM
156139
dotenv (= 2.2.1)
157140
railties (>= 3.2, < 5.2)
158141
erubi (1.6.1)
142+
et-orbi (1.0.5)
143+
tzinfo
159144
excon (0.59.0)
160145
execjs (2.7.0)
161146
factory_girl (4.8.0)
@@ -186,12 +171,10 @@ GEM
186171
activesupport (>= 4.2.0)
187172
hashdiff (0.3.6)
188173
hashie (3.5.6)
189-
hitimes (1.2.6)
190174
http-cookie (1.0.3)
191175
domain_name (~> 0.5)
192176
http_logger (0.5.1)
193177
i18n (0.8.6)
194-
ice_cube (0.14.0)
195178
ipaddress (0.8.3)
196179
jbuilder (2.7.0)
197180
activesupport (>= 4.2.0)
@@ -377,6 +360,8 @@ GEM
377360
ruby-progressbar (1.8.3)
378361
ruby_dep (1.5.0)
379362
rubyzip (1.2.1)
363+
rufus-scheduler (3.4.2)
364+
et-orbi (~> 1.0)
380365
safe_yaml (1.0.4)
381366
sass (3.5.1)
382367
sass-listen (~> 4.0.0)
@@ -402,10 +387,11 @@ GEM
402387
redis (~> 3.3, >= 3.3.3)
403388
sidekiq-limit_fetch (3.4.0)
404389
sidekiq (>= 4)
405-
sidetiq (0.7.2)
406-
celluloid (>= 0.17.3)
407-
ice_cube (~> 0.14.0)
408-
sidekiq (>= 4.1.0)
390+
sidekiq-scheduler (2.1.7)
391+
redis (~> 3)
392+
rufus-scheduler (~> 3.2)
393+
sidekiq (>= 3)
394+
tilt (>= 1.4.0)
409395
simple_form (3.5.0)
410396
actionpack (> 4, < 5.2)
411397
activemodel (> 4, < 5.2)
@@ -441,8 +427,6 @@ GEM
441427
thread_safe (0.3.6)
442428
tilt (2.0.8)
443429
timecop (0.9.1)
444-
timers (4.1.2)
445-
hitimes
446430
turbolinks (5.0.1)
447431
turbolinks-source (~> 5)
448432
turbolinks-source (5.0.3)
@@ -534,7 +518,7 @@ DEPENDENCIES
534518
settingslogic
535519
sidekiq
536520
sidekiq-limit_fetch
537-
sidetiq
521+
sidekiq-scheduler
538522
simple_form
539523
sinatra (~> 2.0.0.beta2)
540524
sitemap_generator

app/schedulers/base_scheduler.rb

+9
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
require 'sidekiq-scheduler'
2+
3+
class BaseScheduler
4+
include Sidekiq::Worker
5+
6+
def perform
7+
raise NotImplementedError, 'perform'
8+
end
9+
end

app/schedulers/example_scheduler.rb

+7
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
class ExampleScheduler < BaseScheduler
2+
3+
def perform(*args)
4+
metadata = args.last
5+
puts metadata.inspect
6+
end
7+
end
+8
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
require 'sidekiq/scheduler'
2+
3+
Sidekiq.configure_server do |config|
4+
config.on(:startup) do
5+
Sidekiq.schedule = YAML.load_file(Rails.root.join('config', 'sidekiq_scheduler.yml'))
6+
Sidekiq::Scheduler.reload_schedule!
7+
end
8+
end

config/routes.rb

+1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
require 'sidekiq/web'
2+
require 'sidekiq-scheduler/web'
23

34
Rails.application.routes.draw do
45
devise_for :users

config/sidekiq_scheduler.yml

+19
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
example1:
2+
# https://github.com/jmettraux/rufus-scheduler
3+
every: '1h'
4+
class: 'ExampleScheduler'
5+
description: 'Example 1'
6+
queue: 'default'
7+
enabled: true
8+
include_metadata: true
9+
dynamic: true
10+
dynamic_every: '60s'
11+
example2:
12+
every: '1d'
13+
class: 'ExampleScheduler'
14+
description: 'Example 2'
15+
queue: 'default'
16+
enabled: true
17+
include_metadata: true
18+
dynamic: true
19+
dynamic_every: '60s'

0 commit comments

Comments
 (0)