Sha256: 15f6fc05caabe664757d1a65829591d4c238eef7686ac686021af4d5798c719d

Contents?: true

Size: 1.17 KB

Versions: 4

Compression:

Stored size: 1.17 KB

Contents

module Watchdocs
  module Rails
    module Recordings
      class Recorder
        attr_reader :store, :output

        def initialize(from_specs: true)
          set_store(from_specs)
        end

        def call(new_call)
          record_new
          save_recordings
          send_recordings if buffer_full?
        end

        private

        def record_new
          @output = if current_recordings
                     current_recordings << new_call
                    else
                     [new_call]
                    end
        end

        def current_recordings
          @current ||= store.read
        end

        def save_recordings
          store.write(output)
        end

        def send_recordings
          Recordings.send(output)
        end

        def set_store(from_specs)
          @store = if from_specs
                     Rails::Buffer::MemoryBuffer
                   else
                     Rails::Buffer::FileBuffer
                   end
        end

        def buffer_full?
          current_recordings.count > buffer_size
        end

        def buffer_size
          Rails.configuration.buffer_size
        end
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
watchdocs-rails-0.3.3 lib/watchdocs/rails/recordings/recorder.rb
watchdocs-rails-0.3.2 lib/watchdocs/rails/recordings/recorder.rb
watchdocs-rails-0.3.1 lib/watchdocs/rails/recordings/recorder.rb
watchdocs-rails-0.3.0 lib/watchdocs/rails/recordings/recorder.rb