sidekiq-scheduler 0.1.2 → 0.2.0

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.
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
3
  begin
4
- require 'sidekiq-scheduler'
4
+ require 'sidekiq-scheduler/cli'
5
5
  rescue LoadError
6
6
  # Better way to do this in dev?
7
7
  dir = File.expand_path(File.dirname(__FILE__) + '/../lib')
@@ -10,7 +10,7 @@ rescue LoadError
10
10
  end
11
11
 
12
12
  begin
13
- cli = Sidekiq::CLI.new
13
+ cli = Sidekiq::CLI.instance
14
14
  cli.parse
15
15
  cli.run
16
16
  rescue => e
@@ -1,4 +1,3 @@
1
- require 'sidekiq-scheduler/cli'
2
1
  require 'sidekiq-scheduler/client'
3
- require 'sidekiq-scheduler/manager'
2
+ require 'sidekiq-scheduler/worker'
4
3
  require 'sidekiq-scheduler/version'
@@ -15,18 +15,18 @@ module SidekiqScheduler
15
15
  item['class'] = item['class'].to_s if !item['class'].is_a?(String)
16
16
 
17
17
  # Add item to the list for this timestamp
18
- Sidekiq.redis.rpush("delayed:#{timestamp}", MultiJson.encode(item))
18
+ Sidekiq.redis { |r| r.rpush("delayed:#{timestamp}", MultiJson.encode(item)) }
19
19
 
20
20
  # Add timestamp to zset. Score and value are based on the timestamp
21
21
  # as querying will be based on that
22
- Sidekiq.redis.zadd('delayed_queue_schedule', timestamp, timestamp)
22
+ Sidekiq.redis { |r| r.zadd('delayed_queue_schedule', timestamp, timestamp) }
23
23
  end
24
24
 
25
25
  def remove_scheduler_queue(timestamp)
26
26
  key = "delayed:#{timestamp}"
27
- if 0 == Sidekiq.redis.llen(key)
28
- Sidekiq.redis.del(key)
29
- Sidekiq.redis.zrem('delayed_queue_schedule', timestamp)
27
+ if 0 == Sidekiq.redis { |r| r.llen(key) }
28
+ Sidekiq.redis { |r| r.del(key) }
29
+ Sidekiq.redis { |r| r.zrem('delayed_queue_schedule', timestamp) }
30
30
  end
31
31
  end
32
32
 
@@ -53,8 +53,8 @@ module SidekiqScheduler
53
53
  item = {'class' => klass.to_s, 'args' => args}
54
54
  item['queue'] = queue.to_s if queue
55
55
  search = MultiJson.encode(item)
56
- Array(Sidekiq.redis.keys("delayed:*")).each do |key|
57
- count += Sidekiq.redis.lrem(key, 0, search)
56
+ Array(Sidekiq.redis { |r| r.keys("delayed:*") }).each do |key|
57
+ count += Sidekiq.redis { |r| r.lrem(key, 0, search) }
58
58
  end
59
59
  count
60
60
  end
@@ -77,7 +77,7 @@ module SidekiqScheduler
77
77
  item = {'class' => klass.to_s, 'args' => args}
78
78
  item['queue'] = queue.to_s if queue
79
79
  search = MultiJson.encode(item)
80
- count = Sidekiq.redis.lrem("delayed:#{timestamp}", 0, search)
80
+ count = Sidekiq.redis { |r| r.lrem("delayed:#{timestamp}", 0, search) }
81
81
  remove_scheduler_queue(timestamp)
82
82
  count
83
83
  end
@@ -16,7 +16,7 @@ module SidekiqScheduler
16
16
  include Celluloid
17
17
 
18
18
  def initialize(options={})
19
- logger.info "Booting sidekiq scheduler #{SidekiqScheduler::VERSION} with Redis at #{redis.client.location}"
19
+ logger.info "Booting sidekiq scheduler #{SidekiqScheduler::VERSION} with Redis at #{redis { |r| r.client.location} }"
20
20
  logger.debug { options.inspect }
21
21
  @enabled = options[:scheduler]
22
22
  @resolution = options[:resolution] || 5
@@ -37,14 +37,16 @@ module SidekiqScheduler
37
37
  private
38
38
 
39
39
  def clear_scheduled_work
40
- queues = redis.zrange('delayed_queue_schedule', 0, -1).to_a
41
- redis.del(*queues.map { |t| "delayed:#{t}" }) unless queues.empty?
42
- redis.del('delayed_queue_schedule')
40
+ redis do |conn|
41
+ queues = conn.zrange('delayed_queue_schedule', 0, -1).to_a
42
+ conn.del(*queues.map { |t| "delayed:#{t}" }) unless queues.empty?
43
+ conn.del('delayed_queue_schedule')
44
+ end
43
45
  end
44
46
 
45
47
  def find_scheduled_work(timestamp)
46
48
  loop do
47
- break logger.debug("Finished processing queue for timestamp #{timestamp}") unless msg = redis.lpop("delayed:#{timestamp}")
49
+ break logger.debug("Finished processing queue for timestamp #{timestamp}") unless msg = redis { |r| r.lpop("delayed:#{timestamp}") }
48
50
  item = MultiJson.decode(msg)
49
51
  queue = item.delete('queue')
50
52
  Sidekiq::Client.push(queue, item)
@@ -53,7 +55,7 @@ module SidekiqScheduler
53
55
  end
54
56
 
55
57
  def find_next_timestamp
56
- timestamp = redis.zrangebyscore('delayed_queue_schedule', '-inf', Time.now.to_i, :limit => [0, 1])
58
+ timestamp = redis { |r| r.zrangebyscore('delayed_queue_schedule', '-inf', Time.now.to_i, :limit => [0, 1]) }
57
59
  if timestamp.is_a?(Array)
58
60
  timestamp = timestamp.first
59
61
  end
@@ -1,3 +1,3 @@
1
1
  module SidekiqScheduler
2
- VERSION = "0.1.2"
2
+ VERSION = "0.2.0"
3
3
  end
@@ -5,7 +5,7 @@ require 'tempfile'
5
5
  class CliTest < MiniTest::Unit::TestCase
6
6
  describe 'with cli' do
7
7
  before do
8
- @cli = new_cli
8
+ @cli = Sidekiq::CLI.instance
9
9
  end
10
10
 
11
11
  describe 'with config file' do
@@ -17,17 +17,5 @@ class CliTest < MiniTest::Unit::TestCase
17
17
  assert_equal 30, Sidekiq.options[:resolution]
18
18
  end
19
19
  end
20
-
21
- def new_cli
22
- cli = Sidekiq::CLI.new
23
- def cli.die(code)
24
- @code = code
25
- end
26
-
27
- def cli.valid?
28
- !@code
29
- end
30
- cli
31
- end
32
20
  end
33
21
  end
@@ -95,6 +95,7 @@ class ClientTest < MiniTest::Unit::TestCase
95
95
  def @redis.setex(*); nil; end
96
96
  def @redis.expire(*); true; end
97
97
  def @redis.with_connection; yield self; end
98
+ def @redis.with; yield self; end
98
99
  Sidekiq.instance_variable_set(:@redis, @redis)
99
100
  end
100
101
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sidekiq-scheduler
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.2.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,22 +9,22 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-03-14 00:00:00.000000000 Z
12
+ date: 2012-03-19 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: sidekiq
16
- requirement: &70095698629680 !ruby/object:Gem::Requirement
16
+ requirement: &70191338909220 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
20
20
  - !ruby/object:Gem::Version
21
- version: 0.8.0
21
+ version: 0.9.0
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70095698629680
24
+ version_requirements: *70191338909220
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: rake
27
- requirement: &70095698629040 !ruby/object:Gem::Requirement
27
+ requirement: &70191338907400 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '0'
33
33
  type: :development
34
34
  prerelease: false
35
- version_requirements: *70095698629040
35
+ version_requirements: *70191338907400
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: timecop
38
- requirement: &70095698628560 !ruby/object:Gem::Requirement
38
+ requirement: &70191338906080 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,7 +43,7 @@ dependencies:
43
43
  version: '0'
44
44
  type: :development
45
45
  prerelease: false
46
- version_requirements: *70095698628560
46
+ version_requirements: *70191338906080
47
47
  description: Light weight job scheduling extension for Sidekiq that adds support for
48
48
  queueing items in the future.
49
49
  email:
@@ -88,7 +88,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
88
88
  version: '0'
89
89
  segments:
90
90
  - 0
91
- hash: 3002219408512225865
91
+ hash: -2828118743753619564
92
92
  required_rubygems_version: !ruby/object:Gem::Requirement
93
93
  none: false
94
94
  requirements:
@@ -97,7 +97,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
97
97
  version: '0'
98
98
  segments:
99
99
  - 0
100
- hash: 3002219408512225865
100
+ hash: -2828118743753619564
101
101
  requirements: []
102
102
  rubyforge_project:
103
103
  rubygems_version: 1.8.17