sidekiq-cron 0.4.3 → 0.4.4

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 8adf66042c715b918d56ac413f033f713fb0cfb0
4
- data.tar.gz: 44d64bdf7d9e1329510fece42e186c35776ed85d
3
+ metadata.gz: 7b46a8aee85dbf5b066d34641a17f4f34ff7307f
4
+ data.tar.gz: b3d6a7566616aaa7ac5489289f5972432027d5a2
5
5
  SHA512:
6
- metadata.gz: 1e0b4a1f7cd40f4e4db9d15ebc37cebb2afbf1249b8107be50557e72f93f8100da2c85bb1349a8125de0ba529b77c17c17ca7ff077883118c9cb655f33f5f4e9
7
- data.tar.gz: 3487319de6f4626be8704a91f5767ba24505e88385b06b9df43b6818451dcc90e8246c110c1084d290e9fbfabe8d44831b8949f4277c80c1393287639f7714e4
6
+ metadata.gz: 2d4ef330692ca3f9ea1ca7c9784cec17d8b13b15364426c0b25d604bccf87b39e3bd6e2d1b6c7bd12a52661c8d9675f495ab8f36a8c58bc44960e8dd566a87ef
7
+ data.tar.gz: 974512d9821df1ec95296be13cd51f4e5490f04eca4b65bc3be2e41756af4570cbde023e1c2a1020187a404507087b3a133173c03b79b8d8ff8a9fe0a04ba7fa
data/Gemfile CHANGED
@@ -1,6 +1,6 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
- gem 'sidekiq', '>= 4.0.0'
3
+ gem 'sidekiq', '>= 4.2.1'
4
4
  gem 'rufus-scheduler', '>= 2.0.24'
5
5
  gem 'redis-namespace', '>= 1.5.2'
6
6
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.4.3
1
+ 0.4.4
@@ -54,24 +54,50 @@ module Sidekiq
54
54
  nil
55
55
  end
56
56
 
57
- if @active_job or defined?(ActiveJob::Base) && klass_const && klass_const < ActiveJob::Base
58
- Sidekiq::Client.push(active_job_message)
57
+ if klass_const
58
+ if defined?(ActiveJob::Base) && klass_const < ActiveJob::Base
59
+ enqueue_active_job(klass_const)
60
+ else
61
+ enqueue_sidekiq_worker(klass_const)
62
+ end
59
63
  else
60
- Sidekiq::Client.push(sidekiq_worker_message)
64
+ if @active_job
65
+ Sidekiq::Client.push(active_job_message)
66
+ else
67
+ Sidekiq::Client.push(sidekiq_worker_message)
68
+ end
61
69
  end
62
70
 
63
71
  save
64
72
  logger.debug { "enqueued #{@name}: #{@message}" }
65
73
  end
66
74
 
75
+ def is_active_job?
76
+ @active_job || defined?(ActiveJob::Base) && @klass.to_s.constantize < ActiveJob::Base
77
+ rescue NameError
78
+ false
79
+ end
80
+
81
+ def enqueue_active_job(klass_const)
82
+ klass_const.set(queue: @queue_name_with_prefix).perform_later(*@args)
83
+
84
+ true
85
+ end
86
+
87
+ def enqueue_sidekiq_worker(klass_const)
88
+ klass_const.set(queue: @queue_name_with_prefix).perform_async(*@args)
89
+
90
+ true
91
+ end
92
+
67
93
  # siodekiq worker message
68
94
  def sidekiq_worker_message
69
95
  @message.is_a?(String) ? Sidekiq.load_json(@message) : @message
70
96
  end
71
97
 
72
- # active job has different structure how it is loading data from sidekiq
73
- # queue, it createaswrapper arround job
74
- def active_job_message
98
+ def queue_name_with_prefix
99
+ return @queue unless is_active_job?
100
+
75
101
  if !"#{@active_job_queue_name_delimiter}".empty?
76
102
  queue_name_delimiter = @active_job_queue_name_delimiter
77
103
  elsif defined?(ActiveJob::Base) && defined?(ActiveJob::Base.queue_name_delimiter) && !ActiveJob::Base.queue_name_delimiter.empty?
@@ -88,14 +114,20 @@ module Sidekiq
88
114
  queue_name = @queue
89
115
  end
90
116
 
117
+ queue_name
118
+ end
119
+
120
+ # active job has different structure how it is loading data from sidekiq
121
+ # queue, it createaswrapper arround job
122
+ def active_job_message
91
123
  {
92
124
  'class' => 'ActiveJob::QueueAdapters::SidekiqAdapter::JobWrapper',
93
- 'queue' => queue_name,
125
+ 'queue' => @queue_name_with_prefix,
94
126
  'description' => @description,
95
127
  'args' => [{
96
128
  'job_class' => @klass,
97
129
  'job_id' => SecureRandom.uuid,
98
- 'queue_name' => queue_name,
130
+ 'queue_name' => @queue_name_with_prefix,
99
131
  'arguments' => @args
100
132
  }]
101
133
  }
@@ -289,6 +321,7 @@ module Sidekiq
289
321
  @message = message_data
290
322
  end
291
323
 
324
+ @queue_name_with_prefix = queue_name_with_prefix
292
325
  end
293
326
 
294
327
  def status
@@ -7,7 +7,7 @@ module Sidekiq
7
7
  app.settings.locales << File.join(File.expand_path("..", __FILE__), "locales")
8
8
 
9
9
  #index page of cron jobs
10
- app.get '/cron' do
10
+ app.get '/cron' do
11
11
  view_path = File.join(File.expand_path("..", __FILE__), "views")
12
12
 
13
13
  @cron_jobs = Sidekiq::Cron::Job.all
@@ -21,37 +21,37 @@ module Sidekiq
21
21
  end
22
22
 
23
23
  #enque cron job
24
- app.post '/cron/:name/enque' do |name|
25
- if job = Sidekiq::Cron::Job.find(name)
24
+ app.post '/cron/:name/enque' do
25
+ if job = Sidekiq::Cron::Job.find(route_params[:name])
26
26
  job.enque!
27
27
  end
28
28
  redirect "#{root_path}cron"
29
29
  end
30
30
 
31
31
  #delete schedule
32
- app.post '/cron/:name/delete' do |name|
33
- if job = Sidekiq::Cron::Job.find(name)
32
+ app.post '/cron/:name/delete' do
33
+ if job = Sidekiq::Cron::Job.find(route_params[:name])
34
34
  job.destroy
35
35
  end
36
36
  redirect "#{root_path}cron"
37
37
  end
38
38
 
39
39
  #enable job
40
- app.post '/cron/:name/enable' do |name|
41
- if job = Sidekiq::Cron::Job.find(name)
40
+ app.post '/cron/:name/enable' do
41
+ if job = Sidekiq::Cron::Job.find(route_params[:name])
42
42
  job.enable!
43
43
  end
44
44
  redirect "#{root_path}cron"
45
45
  end
46
46
 
47
47
  #disable job
48
- app.post '/cron/:name/disable' do |name|
49
- if job = Sidekiq::Cron::Job.find(name)
48
+ app.post '/cron/:name/disable' do
49
+ if job = Sidekiq::Cron::Job.find(route_params[:name])
50
50
  job.disable!
51
51
  end
52
52
  redirect "#{root_path}cron"
53
53
  end
54
-
54
+
55
55
  end
56
56
  end
57
57
  end
data/sidekiq-cron.gemspec CHANGED
@@ -2,16 +2,16 @@
2
2
  # DO NOT EDIT THIS FILE DIRECTLY
3
3
  # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
4
  # -*- encoding: utf-8 -*-
5
- # stub: sidekiq-cron 0.4.3 ruby lib
5
+ # stub: sidekiq-cron 0.4.4 ruby lib
6
6
 
7
7
  Gem::Specification.new do |s|
8
8
  s.name = "sidekiq-cron".freeze
9
- s.version = "0.4.3"
9
+ s.version = "0.4.4"
10
10
 
11
11
  s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version=
12
12
  s.require_paths = ["lib".freeze]
13
13
  s.authors = ["Ondrej Bartas".freeze]
14
- s.date = "2016-08-18"
14
+ s.date = "2016-09-22"
15
15
  s.description = "Enables to set jobs to be run in specified time (using CRON notation)".freeze
16
16
  s.email = "ondrej@bartas.cz".freeze
17
17
  s.extra_rdoc_files = [
@@ -56,7 +56,7 @@ Gem::Specification.new do |s|
56
56
  s.specification_version = 4
57
57
 
58
58
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
59
- s.add_runtime_dependency(%q<sidekiq>.freeze, [">= 4.0.0"])
59
+ s.add_runtime_dependency(%q<sidekiq>.freeze, [">= 4.2.1"])
60
60
  s.add_runtime_dependency(%q<rufus-scheduler>.freeze, [">= 2.0.24"])
61
61
  s.add_runtime_dependency(%q<redis-namespace>.freeze, [">= 1.5.2"])
62
62
  s.add_development_dependency(%q<bundler>.freeze, [">= 0"])
@@ -74,7 +74,7 @@ Gem::Specification.new do |s|
74
74
  s.add_development_dependency(%q<coveralls>.freeze, [">= 0"])
75
75
  s.add_development_dependency(%q<shotgun>.freeze, [">= 0"])
76
76
  else
77
- s.add_dependency(%q<sidekiq>.freeze, [">= 4.0.0"])
77
+ s.add_dependency(%q<sidekiq>.freeze, [">= 4.2.1"])
78
78
  s.add_dependency(%q<rufus-scheduler>.freeze, [">= 2.0.24"])
79
79
  s.add_dependency(%q<redis-namespace>.freeze, [">= 1.5.2"])
80
80
  s.add_dependency(%q<bundler>.freeze, [">= 0"])
@@ -93,7 +93,7 @@ Gem::Specification.new do |s|
93
93
  s.add_dependency(%q<shotgun>.freeze, [">= 0"])
94
94
  end
95
95
  else
96
- s.add_dependency(%q<sidekiq>.freeze, [">= 4.0.0"])
96
+ s.add_dependency(%q<sidekiq>.freeze, [">= 4.2.1"])
97
97
  s.add_dependency(%q<rufus-scheduler>.freeze, [">= 2.0.24"])
98
98
  s.add_dependency(%q<redis-namespace>.freeze, [">= 1.5.2"])
99
99
  s.add_dependency(%q<bundler>.freeze, [">= 0"])
data/test/test_helper.rb CHANGED
@@ -32,7 +32,7 @@ require 'sidekiq/web'
32
32
  Sidekiq.logger.level = Logger::ERROR
33
33
 
34
34
  require 'sidekiq/redis_connection'
35
- redis_url = ENV['REDIS_URL'] || 'redis://localhost/15'
35
+ redis_url = ENV['REDIS_URL'] || 'redis://0.0.0.0:6379'
36
36
  REDIS = Sidekiq::RedisConnection.create(:url => redis_url, :namespace => 'testy')
37
37
 
38
38
  Sidekiq.configure_client do |config|
@@ -61,3 +61,32 @@ class CronTestClassWithQueue
61
61
  puts "super croned job #{args}"
62
62
  end
63
63
  end
64
+
65
+ module ActiveJob
66
+ class Base
67
+ def self.queue_name_prefix
68
+ @queue_name_prefix
69
+ end
70
+
71
+ def self.queue_name_prefix=(queue_name_prefix)
72
+ @queue_name_prefix = queue_name_prefix
73
+ end
74
+
75
+ def self.set(options)
76
+ @queue = options['queue']
77
+
78
+ self
79
+ end
80
+
81
+ def self.perform_later(*args)
82
+ {
83
+ "job_class" => self.class.name,
84
+ "queue_name" => @queue,
85
+ "args" => [*args],
86
+ }
87
+ end
88
+ end
89
+ end
90
+
91
+ class ActiveJobCronTestClass < ActiveJob::Base
92
+ end
@@ -2,7 +2,6 @@
2
2
  require './test/test_helper'
3
3
 
4
4
  describe "Cron Job" do
5
-
6
5
  before do
7
6
  #clear all previous saved data from redis
8
7
  Sidekiq.redis do |conn|
@@ -260,23 +259,12 @@ describe "Cron Job" do
260
259
  describe '#active_job_message' do
261
260
  before do
262
261
  SecureRandom.stubs(:uuid).returns('XYZ')
263
- module ActiveJob
264
- class Base
265
- def self.queue_name_prefix
266
- @@queue_name_prefix
267
- end
268
- def self.queue_name_prefix=(queue_name_prefix)
269
- @@queue_name_prefix = queue_name_prefix
270
- end
271
- end
272
- end
273
- class ActiveJobTest < ActiveJob::Base; end
274
262
  ActiveJob::Base.queue_name_prefix = ''
275
263
 
276
264
  @args = {
277
265
  name: 'Test',
278
266
  cron: '* * * * *',
279
- klass: 'ActiveJobTest',
267
+ klass: 'ActiveJobCronTestClass',
280
268
  queue: 'super_queue',
281
269
  description: nil,
282
270
  args: { foo: 'bar' }
@@ -290,7 +278,7 @@ describe "Cron Job" do
290
278
  'queue' => 'super_queue',
291
279
  'description' => nil,
292
280
  'args' => [{
293
- 'job_class' => 'ActiveJobTest',
281
+ 'job_class' => 'ActiveJobCronTestClass',
294
282
  'job_id' => 'XYZ',
295
283
  'queue_name' => 'super_queue',
296
284
  'arguments' => [{foo: 'bar'}]
@@ -303,23 +291,12 @@ describe "Cron Job" do
303
291
  describe '#active_job_message with queue_name_prefix' do
304
292
  before do
305
293
  SecureRandom.stubs(:uuid).returns('XYZ')
306
- module ActiveJob
307
- class Base
308
- def self.queue_name_prefix
309
- @@queue_name_prefix
310
- end
311
- def self.queue_name_prefix=(queue_name_prefix)
312
- @@queue_name_prefix = queue_name_prefix
313
- end
314
- end
315
- end
316
- class ActiveJobTest < ActiveJob::Base; end
317
294
  ActiveJob::Base.queue_name_prefix = "prefix"
318
295
 
319
296
  @args = {
320
297
  name: 'Test',
321
298
  cron: '* * * * *',
322
- klass: 'ActiveJobTest',
299
+ klass: 'ActiveJobCronTestClass',
323
300
  queue: 'super_queue',
324
301
  queue_name_prefix: 'prefix',
325
302
  args: { foo: 'bar' }
@@ -333,7 +310,7 @@ describe "Cron Job" do
333
310
  'queue' => 'prefix_super_queue',
334
311
  'description' => nil,
335
312
  'args' =>[{
336
- 'job_class' => 'ActiveJobTest',
313
+ 'job_class' => 'ActiveJobCronTestClass',
337
314
  'job_id' => 'XYZ',
338
315
  'queue_name' => 'prefix_super_queue',
339
316
  'arguments' => [{foo: 'bar'}]
@@ -346,71 +323,45 @@ describe "Cron Job" do
346
323
  describe '#enque!' do
347
324
  describe 'active job' do
348
325
  before do
349
- module ActiveJob
350
- class Base
351
- def self.queue_name_prefix
352
- @@queue_name_prefix
353
- end
354
- def self.queue_name_prefix=(queue_name_prefix)
355
- @@queue_name_prefix = queue_name_prefix
356
- end
357
- end
358
- end
359
- class ActiveJobTest < ActiveJob::Base; end
360
- ActiveJob::Base.queue_name_prefix = ""
361
-
362
326
  @args = {
363
327
  name: 'Test',
364
328
  cron: '* * * * *',
365
- klass: 'ActiveJobTest'
329
+ klass: 'ActiveJobCronTestClass'
366
330
  }
367
331
  @job = Sidekiq::Cron::Job.new(@args)
368
332
  end
369
333
 
370
334
  it 'pushes to queue active jobs message' do
371
- @job.expects(:active_job_message)
372
- .returns('class' => 'Test', 'args' => [])
335
+ @job.expects(:enqueue_active_job)
336
+ .returns(true)
373
337
  @job.enque!
374
338
  end
375
339
  end
376
340
 
377
341
  describe 'active job with queue_name_prefix' do
378
342
  before do
379
- module ActiveJob
380
- class Base
381
- def self.queue_name_prefix
382
- @@queue_name_prefix
383
- end
384
- def self.queue_name_prefix=(queue_name_prefix)
385
- @@queue_name_prefix = queue_name_prefix
386
- end
387
- end
388
- end
389
- class ActiveJobTest < ActiveJob::Base; end
390
- ActiveJob::Base.queue_name_prefix = "prefix"
391
-
392
343
  @args = {
393
344
  name: 'Test',
394
345
  cron: '* * * * *',
395
- klass: 'ActiveJobTest',
346
+ klass: 'ActiveJobCronTestClass',
396
347
  queue: 'cron'
397
348
  }
398
349
  @job = Sidekiq::Cron::Job.new(@args)
399
350
  end
400
351
 
401
352
  it 'pushes to queue active jobs message with queue_name_prefix' do
402
- @job.expects(:active_job_message)
403
- .returns('class' => 'Test', 'args' => [], 'queue' => 'prefix_cron')
353
+ @job.expects(:enqueue_active_job)
354
+ .returns(true)
404
355
  @job.enque!
405
356
  end
406
357
  end
407
358
 
408
- describe 'active job via configuration (bool: true)' do
359
+ describe 'active job via configuration (bool: true) [unknown class]' do
409
360
  before do
410
361
  @args = {
411
362
  name: 'Test',
412
363
  cron: '* * * * *',
413
- klass: 'ActiveJobTest',
364
+ klass: 'UnknownClass',
414
365
  active_job: true
415
366
  }
416
367
  @job = Sidekiq::Cron::Job.new(@args)
@@ -418,17 +369,17 @@ describe "Cron Job" do
418
369
 
419
370
  it 'pushes to queue active jobs message' do
420
371
  @job.expects(:active_job_message)
421
- .returns('class' => 'Test', 'args' => [])
372
+ .returns('class' => 'UnknownClass', 'args' => [])
422
373
  @job.enque!
423
374
  end
424
375
  end
425
376
 
426
- describe 'active job via configuration (string: true)' do
377
+ describe 'active job via configuration (string: true) [unknown class]' do
427
378
  before do
428
379
  @args = {
429
380
  name: 'Test',
430
381
  cron: '* * * * *',
431
- klass: 'ActiveJobTest',
382
+ klass: 'UnknownClass',
432
383
  active_job: 'true'
433
384
  }
434
385
  @job = Sidekiq::Cron::Job.new(@args)
@@ -436,17 +387,17 @@ describe "Cron Job" do
436
387
 
437
388
  it 'pushes to queue active jobs message' do
438
389
  @job.expects(:active_job_message)
439
- .returns('class' => 'Test', 'args' => [])
390
+ .returns('class' => 'UnknownClass', 'args' => [])
440
391
  @job.enque!
441
392
  end
442
393
  end
443
394
 
444
- describe 'active job via configuration (string: yes)' do
395
+ describe 'active job via configuration (string: yes) [unknown class]' do
445
396
  before do
446
397
  @args = {
447
398
  name: 'Test',
448
399
  cron: '* * * * *',
449
- klass: 'ActiveJobTest',
400
+ klass: 'UnknownClass',
450
401
  active_job: 'yes'
451
402
  }
452
403
  @job = Sidekiq::Cron::Job.new(@args)
@@ -454,17 +405,17 @@ describe "Cron Job" do
454
405
 
455
406
  it 'pushes to queue active jobs message' do
456
407
  @job.expects(:active_job_message)
457
- .returns('class' => 'Test', 'args' => [])
408
+ .returns('class' => 'UnknownClass', 'args' => [])
458
409
  @job.enque!
459
410
  end
460
411
  end
461
412
 
462
- describe 'active job via configuration (number: 1)' do
413
+ describe 'active job via configuration (number: 1) [unknown class]' do
463
414
  before do
464
415
  @args = {
465
416
  name: 'Test',
466
417
  cron: '* * * * *',
467
- klass: 'ActiveJobTest',
418
+ klass: 'UnknownClass',
468
419
  active_job: 1
469
420
  }
470
421
  @job = Sidekiq::Cron::Job.new(@args)
@@ -472,17 +423,17 @@ describe "Cron Job" do
472
423
 
473
424
  it 'pushes to queue active jobs message' do
474
425
  @job.expects(:active_job_message)
475
- .returns('class' => 'Test', 'args' => [])
426
+ .returns('class' => 'UnknownClass', 'args' => [])
476
427
  @job.enque!
477
428
  end
478
429
  end
479
430
 
480
- describe 'active job via configuration with queue_name_prefix option' do
431
+ describe 'active job via configuration with queue_name_prefix option [unknown class]' do
481
432
  before do
482
433
  @args = {
483
434
  name: 'Test',
484
435
  cron: '* * * * *',
485
- klass: 'ActiveJobTest',
436
+ klass: 'UnknownClass',
486
437
  queue: 'cron',
487
438
  active_job: true,
488
439
  queue_name_prefix: 'prefix'
@@ -492,7 +443,7 @@ describe "Cron Job" do
492
443
 
493
444
  it 'pushes to queue active jobs message with queue_name_prefix' do
494
445
  @job.expects(:active_job_message)
495
- .returns('class' => 'Test', 'args' => [], 'queue' => 'prefix_cron')
446
+ .returns('class' => 'UnknownClass', 'args' => [], 'queue' => 'prefix_cron')
496
447
  @job.enque!
497
448
  end
498
449
  end
@@ -508,8 +459,8 @@ describe "Cron Job" do
508
459
  end
509
460
 
510
461
  it 'pushes to queue active jobs message' do
511
- @job.expects(:sidekiq_worker_message)
512
- .returns('class' => 'Test', 'args' => [])
462
+ @job.expects(:enqueue_sidekiq_worker)
463
+ .returns(true)
513
464
  @job.enque!
514
465
  end
515
466
  end
@@ -526,7 +477,8 @@ describe "Cron Job" do
526
477
  end
527
478
 
528
479
  it 'pushes to queue sidekiq worker message' do
529
- assert_equal @job.sidekiq_worker_message, { 'class' => 'UnknownClass', 'args' => [], 'queue' => 'another' }
480
+ @job.expects(:sidekiq_worker_message)
481
+ .returns('class' => 'UnknownClass', 'args' => [], 'queue' => 'another')
530
482
  @job.enque!
531
483
  end
532
484
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sidekiq-cron
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.3
4
+ version: 0.4.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ondrej Bartas
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-08-18 00:00:00.000000000 Z
11
+ date: 2016-09-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: sidekiq
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: 4.0.0
19
+ version: 4.2.1
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
- version: 4.0.0
26
+ version: 4.2.1
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rufus-scheduler
29
29
  requirement: !ruby/object:Gem::Requirement