Sha256: cb6f9c2695181592484ea4276b4df909be58351530c8553f7855eabf2bd795d9

Contents?: true

Size: 1.13 KB

Versions: 2

Compression:

Stored size: 1.13 KB

Contents

require 'delayed_job'

module Delayed
  module Workless
    module Scaler
  
      class Base
        def self.jobs
          Delayed::Job.all(:conditions => { :failed_at => nil })
        end

        def self.num_workers_cache
          Rails.cache.read("WORKLESS_NUM_WORKERS") || 0
        end

        def self.num_workers_cache= num
          Rails.cache.write("WORKLESS_NUM_WORKERS", num)
        end
        
        def self.calculate_num_workers
          num_workers = self.workers
          if num_workers.class == Fixnum
            job_count = self.jobs.count
            if job_count > 500
              return 4 unless num_workers > 3
            elsif job_count > 200
              return 3 unless num_workers > 2
            elsif job_count > 50
              return 2 unless num_workers > 1
            elsif job_count > 0
              return 1 unless num_workers > 0
            else
              return 0
            end
          end
        end
      end

      module HerokuClient

        def client
          @client ||= ::Heroku::Client.new(ENV['HEROKU_USER'], ENV['HEROKU_PASSWORD'])
        end

      end

    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
rcarvalho-workless-1.0.2.11 lib/workless/scalers/base.rb
rcarvalho-workless-1.0.2.10 lib/workless/scalers/base.rb