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.
- data/bin/sidekiq-scheduler +2 -2
- data/lib/sidekiq-scheduler.rb +1 -2
- data/lib/sidekiq-scheduler/client.rb +8 -8
- data/lib/sidekiq-scheduler/manager.rb +8 -6
- data/lib/sidekiq-scheduler/version.rb +1 -1
- data/test/cli_test.rb +1 -13
- data/test/client_test.rb +1 -0
- metadata +11 -11
    
        data/bin/sidekiq-scheduler
    CHANGED
    
    | @@ -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. | 
| 13 | 
            +
              cli = Sidekiq::CLI.instance
         | 
| 14 14 | 
             
              cli.parse
         | 
| 15 15 | 
             
              cli.run
         | 
| 16 16 | 
             
            rescue => e
         | 
    
        data/lib/sidekiq-scheduler.rb
    CHANGED
    
    
| @@ -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 | 
            -
                   | 
| 41 | 
            -
             | 
| 42 | 
            -
             | 
| 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
         | 
    
        data/test/cli_test.rb
    CHANGED
    
    | @@ -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 =  | 
| 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
         | 
    
        data/test/client_test.rb
    CHANGED
    
    
    
        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. | 
| 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- | 
| 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: & | 
| 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. | 
| 21 | 
            +
                    version: 0.9.0
         | 
| 22 22 | 
             
              type: :runtime
         | 
| 23 23 | 
             
              prerelease: false
         | 
| 24 | 
            -
              version_requirements: * | 
| 24 | 
            +
              version_requirements: *70191338909220
         | 
| 25 25 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 26 26 | 
             
              name: rake
         | 
| 27 | 
            -
              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: * | 
| 35 | 
            +
              version_requirements: *70191338907400
         | 
| 36 36 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 37 37 | 
             
              name: timecop
         | 
| 38 | 
            -
              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: * | 
| 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:  | 
| 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:  | 
| 100 | 
            +
                  hash: -2828118743753619564
         | 
| 101 101 | 
             
            requirements: []
         | 
| 102 102 | 
             
            rubyforge_project: 
         | 
| 103 103 | 
             
            rubygems_version: 1.8.17
         |