sidekiq-cron 0.1.8 → 0.1.9
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.
- data/.travis.yml +4 -2
- data/Gemfile +1 -1
- data/VERSION +1 -1
- data/lib/sidekiq/cron/job.rb +14 -16
- data/sidekiq-cron.gemspec +5 -5
- data/test/unit/job_test.rb +8 -3
- data/test/unit/web_extesion_test.rb +5 -4
- metadata +5 -5
data/.travis.yml
CHANGED
@@ -4,6 +4,9 @@ rvm:
|
|
4
4
|
- jruby-19mode
|
5
5
|
- rbx-19mode
|
6
6
|
- 2.0.0
|
7
|
+
- 2.1.0
|
8
|
+
services:
|
9
|
+
- redis-server
|
7
10
|
branches:
|
8
11
|
only:
|
9
12
|
- master
|
@@ -16,5 +19,4 @@ env:
|
|
16
19
|
matrix:
|
17
20
|
allow_failures:
|
18
21
|
- rvm: jruby-19mode
|
19
|
-
- rvm: rbx-19mode
|
20
|
-
- rvm: 2.0.0
|
22
|
+
- rvm: rbx-19mode
|
data/Gemfile
CHANGED
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.1.
|
1
|
+
0.1.9
|
data/lib/sidekiq/cron/job.rb
CHANGED
@@ -15,18 +15,14 @@ module Sidekiq
|
|
15
15
|
|
16
16
|
#crucial part of whole enquing job
|
17
17
|
def should_enque? time
|
18
|
-
|
19
|
-
Sidekiq.redis do |conn|
|
20
|
-
|
21
|
-
status == "enabled" &&
|
22
|
-
@last_run_time < last_time(time) &&
|
23
|
-
conn.zadd(job_enqueued_key, time.to_f.to_s, formated_last_time(time) )
|
24
|
-
)
|
18
|
+
enqueue = false
|
19
|
+
enqueue = Sidekiq.redis do |conn|
|
20
|
+
status == "enabled" && not_enqueued_after?(time) && conn.zadd(job_enqueued_key, time.to_f.to_s, formated_last_time(time))
|
25
21
|
end
|
26
|
-
|
22
|
+
enqueue
|
27
23
|
end
|
28
24
|
|
29
|
-
# remove previous informations about run times
|
25
|
+
# remove previous informations about run times
|
30
26
|
# this will clear redis and make sure that redis will
|
31
27
|
# not overflow with memory
|
32
28
|
def remove_previous_enques time
|
@@ -47,7 +43,6 @@ module Sidekiq
|
|
47
43
|
|
48
44
|
#enque cron job to queue
|
49
45
|
def enque! time = Time.now
|
50
|
-
@last_run_time = time
|
51
46
|
@last_enqueue_time = time
|
52
47
|
|
53
48
|
Sidekiq::Client.push(@message.is_a?(String) ? Sidekiq.load_json(@message) : @message)
|
@@ -159,7 +154,7 @@ module Sidekiq
|
|
159
154
|
end
|
160
155
|
|
161
156
|
attr_accessor :name, :cron, :klass, :args, :message
|
162
|
-
attr_reader :
|
157
|
+
attr_reader :last_enqueue_time
|
163
158
|
|
164
159
|
def initialize input_args = {}
|
165
160
|
args = input_args.stringify_keys
|
@@ -173,9 +168,9 @@ module Sidekiq
|
|
173
168
|
#set status of job
|
174
169
|
@status = args['status'] || status_from_redis
|
175
170
|
|
176
|
-
|
177
|
-
|
178
|
-
|
171
|
+
if args['last_enqueue_time'] && !args['last_enqueue_time'].empty?
|
172
|
+
@last_enqueue_time = Time.parse(args['last_enqueue_time'])
|
173
|
+
end
|
179
174
|
|
180
175
|
#get right arguments for job
|
181
176
|
@args = args["args"].nil? ? [] : parse_args( args["args"] )
|
@@ -248,7 +243,6 @@ module Sidekiq
|
|
248
243
|
args: @args.is_a?(String) ? @args : Sidekiq.dump_json(@args || []),
|
249
244
|
message: @message.is_a?(String) ? @message : Sidekiq.dump_json(@message || {}),
|
250
245
|
status: @status,
|
251
|
-
last_run_time: @last_run_time,
|
252
246
|
last_enqueue_time: @last_enqueue_time,
|
253
247
|
}
|
254
248
|
end
|
@@ -361,9 +355,13 @@ module Sidekiq
|
|
361
355
|
def sort_name
|
362
356
|
"#{status == "enabled" ? 0 : 1}_#{name}".downcase
|
363
357
|
end
|
364
|
-
|
358
|
+
|
365
359
|
private
|
366
360
|
|
361
|
+
def not_enqueued_after?(time)
|
362
|
+
@last_enqueue_time.nil? || @last_enqueue_time < last_time(time)
|
363
|
+
end
|
364
|
+
|
367
365
|
# Try parsing inbound args into an array.
|
368
366
|
# args from Redis will be encoded JSON;
|
369
367
|
# try to load JSON, then failover
|
data/sidekiq-cron.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = "sidekiq-cron"
|
8
|
-
s.version = "0.1.
|
8
|
+
s.version = "0.1.9"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Ondrej Bartas"]
|
12
|
-
s.date = "
|
12
|
+
s.date = "2014-01-27"
|
13
13
|
s.description = "Enables to set jobs to be run in specified time (using CRON notation)"
|
14
14
|
s.email = "ondrej@bartas.cz"
|
15
15
|
s.extra_rdoc_files = [
|
@@ -53,7 +53,7 @@ Gem::Specification.new do |s|
|
|
53
53
|
s.specification_version = 3
|
54
54
|
|
55
55
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
56
|
-
s.add_runtime_dependency(%q<sidekiq>, [">= 2.
|
56
|
+
s.add_runtime_dependency(%q<sidekiq>, [">= 2.17.3"])
|
57
57
|
s.add_runtime_dependency(%q<rufus-scheduler>, [">= 2.0.24"])
|
58
58
|
s.add_development_dependency(%q<bundler>, [">= 0"])
|
59
59
|
s.add_development_dependency(%q<simplecov>, [">= 0"])
|
@@ -69,7 +69,7 @@ Gem::Specification.new do |s|
|
|
69
69
|
s.add_development_dependency(%q<coveralls>, [">= 0"])
|
70
70
|
s.add_development_dependency(%q<shotgun>, [">= 0"])
|
71
71
|
else
|
72
|
-
s.add_dependency(%q<sidekiq>, [">= 2.
|
72
|
+
s.add_dependency(%q<sidekiq>, [">= 2.17.3"])
|
73
73
|
s.add_dependency(%q<rufus-scheduler>, [">= 2.0.24"])
|
74
74
|
s.add_dependency(%q<bundler>, [">= 0"])
|
75
75
|
s.add_dependency(%q<simplecov>, [">= 0"])
|
@@ -86,7 +86,7 @@ Gem::Specification.new do |s|
|
|
86
86
|
s.add_dependency(%q<shotgun>, [">= 0"])
|
87
87
|
end
|
88
88
|
else
|
89
|
-
s.add_dependency(%q<sidekiq>, [">= 2.
|
89
|
+
s.add_dependency(%q<sidekiq>, [">= 2.17.3"])
|
90
90
|
s.add_dependency(%q<rufus-scheduler>, [">= 2.0.24"])
|
91
91
|
s.add_dependency(%q<bundler>, [">= 0"])
|
92
92
|
s.add_dependency(%q<simplecov>, [">= 0"])
|
data/test/unit/job_test.rb
CHANGED
@@ -20,6 +20,7 @@ class CronJobTest < Test::Unit::TestCase
|
|
20
20
|
|
21
21
|
should "be initialized" do
|
22
22
|
job = Sidekiq::Cron::Job.new()
|
23
|
+
assert_nil job.last_enqueue_time
|
23
24
|
assert job.is_a?(Sidekiq::Cron::Job)
|
24
25
|
end
|
25
26
|
|
@@ -109,8 +110,8 @@ class CronJobTest < Test::Unit::TestCase
|
|
109
110
|
end
|
110
111
|
|
111
112
|
should "have to_hash method" do
|
112
|
-
[:name,:klass,:cron,:args,:message,:status
|
113
|
-
assert @job.to_hash.has_key?(key), "to_hash must have key: #{key}"
|
113
|
+
[:name,:klass,:cron,:args,:message,:status].each do |key|
|
114
|
+
assert @job.to_hash.has_key?(key), "to_hash must have key: #{key}"
|
114
115
|
end
|
115
116
|
end
|
116
117
|
end
|
@@ -467,7 +468,11 @@ class CronJobTest < Test::Unit::TestCase
|
|
467
468
|
end
|
468
469
|
|
469
470
|
should "remove old enque times + should be enqeued" do
|
470
|
-
|
471
|
+
job = Sidekiq::Cron::Job.new(@args)
|
472
|
+
assert_nil job.last_enqueue_time
|
473
|
+
assert job.test_and_enque_for_time!(@time), "should enqueue"
|
474
|
+
assert job.last_enqueue_time
|
475
|
+
|
471
476
|
refute Sidekiq::Cron::Job.new(@args).test_and_enque_for_time!(@time), "should not enqueue"
|
472
477
|
Sidekiq.redis do |conn|
|
473
478
|
assert_equal conn.zcard(Sidekiq::Cron::Job.new(@args).send(:job_enqueued_key)), 2, "Should have two enqueued job (first was in save, second in enque)"
|
@@ -1,13 +1,14 @@
|
|
1
1
|
require './test/test_helper'
|
2
2
|
|
3
3
|
class CronWebExtensionTest < Test::Unit::TestCase
|
4
|
+
|
5
|
+
def app
|
6
|
+
Sidekiq::Web
|
7
|
+
end
|
8
|
+
|
4
9
|
context 'Cron web' do
|
5
10
|
include Rack::Test::Methods
|
6
11
|
|
7
|
-
def app
|
8
|
-
Sidekiq::Web
|
9
|
-
end
|
10
|
-
|
11
12
|
setup do
|
12
13
|
Sidekiq.redis = REDIS
|
13
14
|
Sidekiq.redis {|c| c.flushdb }
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sidekiq-cron
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.9
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2014-01-27 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: sidekiq
|
@@ -18,7 +18,7 @@ dependencies:
|
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
20
20
|
- !ruby/object:Gem::Version
|
21
|
-
version: 2.
|
21
|
+
version: 2.17.3
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
24
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -26,7 +26,7 @@ dependencies:
|
|
26
26
|
requirements:
|
27
27
|
- - ! '>='
|
28
28
|
- !ruby/object:Gem::Version
|
29
|
-
version: 2.
|
29
|
+
version: 2.17.3
|
30
30
|
- !ruby/object:Gem::Dependency
|
31
31
|
name: rufus-scheduler
|
32
32
|
requirement: !ruby/object:Gem::Requirement
|
@@ -299,7 +299,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
299
299
|
version: '0'
|
300
300
|
segments:
|
301
301
|
- 0
|
302
|
-
hash: -
|
302
|
+
hash: -890325318725409661
|
303
303
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
304
304
|
none: false
|
305
305
|
requirements:
|