sidekiq-cron 0.4.3 → 0.4.4

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 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