class WebSocketVCR::Cassette
Attributes
name[R]
options[R]
recording[R]
recording?[R]
sessions[R]
Public Class Methods
new(name, options)
click to toggle source
# File lib/simple_websocket_vcr/cassette.rb, line 12 def initialize(name, options) @name = name @options = options @using_json = WebSocketVCR.configuration.json_cassettes @name += @using_json ? '.json' : '.yml' if File.exist?(filename) && @options[:record] != :all @recording = false @sessions = initialize_sessions filename else fail "No cassette '#{name}' found and recording has been turned off" if @options[:record] == :none @recording = true @sessions = [] end end
Public Instance Methods
next_session()
click to toggle source
# File lib/simple_websocket_vcr/cassette.rb, line 28 def next_session if recording? erb_variables = @options[:reverse_substitution] ? @options[:erb] : nil session = if @using_json RecordedJsonSession.new([], erb_variables) else RecordedYamlSession.new([], erb_variables) end @sessions.push(session) @sessions.last else fail NoMoreSessionsError if @sessions.empty? @sessions.shift end end
save()
click to toggle source
# File lib/simple_websocket_vcr/cassette.rb, line 44 def save return unless recording? dirname = File.dirname(filename) # make sure the directory structure is there FileUtils.mkdir_p(dirname) unless File.directory?(dirname) if @using_json text = JSON.pretty_generate(@sessions.map(&:record_entries)) else text = { 'websocket_interactions' => @sessions.map(&:record_entries) }.to_yaml(Indent: 8) end File.open(filename, 'w') { |f| f.write(text) } end
Protected Instance Methods
filename()
click to toggle source
# File lib/simple_websocket_vcr/cassette.rb, line 59 def filename "#{WebSocketVCR.configuration.cassette_library_dir}/#{name}" end
Private Instance Methods
initialize_sessions(filename)
click to toggle source
# File lib/simple_websocket_vcr/cassette.rb, line 65 def initialize_sessions(filename) file_content = File.open(filename, &:read) # parse JSON/YAML if @using_json parsed_content = JSON.parse(file_content) sessions = RecordedJsonSession.load(parsed_content, @options[:erb]) else parsed_content = YAML.load(file_content) sessions = RecordedYamlSession.load(parsed_content, @options[:erb]) end sessions end