Sha256: de85df8752a3a0080a85b66d1d533f19abb4c5ba36c3f098d9a3eeeacfb217f4

Contents?: true

Size: 1.22 KB

Versions: 4

Compression:

Stored size: 1.22 KB

Contents

require 'rspectacles/config'
require 'redis'
require 'uri'
require 'json'

module RSpectacles
  module Adapter
    class RedisLogger
      attr_reader :redis

      def initialize
        @redis = ::Redis.new host: uri.host, port: uri.port, password: uri.password
      end

      def config
        RSpectacles.config
      end

      def uri
        @uri ||= URI.parse config.redis_uri
      end

      def delete_last_log
        redis.del config.last_run_primary_key
      end

      def log(message)
        redis.publish config.pubsub_channel_name, message
        redis.lpush config.last_run_primary_key, message
      end

      def log_formatted(example)
        message = format_example(example)
        redis.publish config.pubsub_channel_name, message
        redis.lpush config.last_run_primary_key, message
      end

      def format_example(example)
        {
          :description => example.description,
          :full_description => example.full_description,
          :status => example.execution_result.status,
          :duration => example.execution_result.run_time,
          :file_path => example.metadata[:file_path],
          :line_number  => example.metadata[:line_number]
        }.to_json
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
rspectacles-0.1.3 lib/rspectacles/adapter/redis_logger.rb
rspectacles-0.1.2 lib/rspectacles/adapter/redis_logger.rb
rspectacles-0.1.1 lib/rspectacles/adapter/redis_logger.rb
rspectacles-0.1.0 lib/rspectacles/adapter/redis_logger.rb