Sha256: 7936e12b72a0c32f798da0b98f4cd5cce6034639b22c9348e699ed94d9cb3a4b

Contents?: true

Size: 821 Bytes

Versions: 3

Compression:

Stored size: 821 Bytes

Contents

module TCR
  class Cassette
    attr_reader :name

    def initialize(name)
      @name = name

      if File.exists?(filename)
        @recording = false
        @contents = File.open(filename) { |f| f.read }
        @sessions = JSON.parse(@contents)
      else
        @recording = true
        @sessions = []
      end
    end

    def recording?
      @recording
    end

    def next_session
      session = @sessions.shift
      raise NoMoreSessionsError unless session
      session
    end

    def append(session)
      raise "Can't append session unless recording" unless recording?
      @sessions << session
      File.open(filename, "w") { |f| f.write(JSON.pretty_generate(@sessions)) }
    end

    protected

    def filename
      "#{TCR.configuration.cassette_library_dir}/#{name}.json"
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
tcr-0.0.4 lib/tcr/cassette.rb
tcr-0.0.3 lib/tcr/cassette.rb
tcr-0.0.2 lib/tcr/cassette.rb