Sha256: bf748d3647b51961918650d9f966b56ee51b0d5b0f39631081c08d9ac320064f

Contents?: true

Size: 1.12 KB

Versions: 14

Compression:

Stored size: 1.12 KB

Contents

module Coverband
  class RedisStore
    def initialize(redis)
      @redis = redis
    end

    def store_report(report)
      store_array('coverband', report.keys)

      report.each do |file, lines|
        store_array("coverband.#{file}", lines)
      end
    end

    def sadd_supports_array?
      # if the value is false, ||= would reevaluate the right side
      return @_sadd_supports_array if defined?(@_sadd_supports_array)

      @_sadd_supports_array = recent_gem_version? && recent_server_version?
    end

    private

    attr_reader :redis

    def store_array(key, values)
      if sadd_supports_array?
        redis.sadd(key, values) if (values.length > 0)
      else
        values.each do |value|
          redis.sadd(key, value)
        end
      end
      values
    end

    def recent_server_version?
      info_data = redis.info
      if info_data.is_a?(Hash)
        Gem::Version.new(info_data['redis_version']) >= Gem::Version.new('2.4')
      else
        #guess supported
        true
      end
    end

    def recent_gem_version?
      Gem::Version.new(Redis::VERSION) >= Gem::Version.new('3.0')
    end
  end
end

Version data entries

14 entries across 14 versions & 1 rubygems

Version Path
coverband-1.0.2 lib/coverband/redis_store.rb
coverband-1.0.1 lib/coverband/redis_store.rb
coverband-1.0.0 lib/coverband/redis_store.rb
coverband-0.1.0.preRC9 lib/coverband/redis_store.rb
coverband-0.1.0.preRC8 lib/coverband/redis_store.rb
coverband-0.1.0.preRC7 lib/coverband/redis_store.rb
coverband-0.1.0.preRC6 lib/coverband/redis_store.rb
coverband-0.1.0.preRC5 lib/coverband/redis_store.rb
coverband-0.1.0.preRC4 lib/coverband/redis_store.rb
coverband-0.1.0.preRC3 lib/coverband/redis_store.rb
coverband-0.1.0.preRC2 lib/coverband/redis_store.rb
coverband-0.1.0.preRC1 lib/coverband/redis_store.rb
coverband-0.1.0.pre lib/coverband/redis_store.rb
coverband-0.0.26 lib/coverband/redis_store.rb