Class: WebSocketVCR::Cassette
- Inherits:
-
Object
- Object
- WebSocketVCR::Cassette
- Defined in:
- lib/simple_websocket_vcr/cassette.rb
Instance Attribute Summary collapse
-
#name ⇒ Object
readonly
Returns the value of attribute name.
-
#options ⇒ Object
readonly
Returns the value of attribute options.
-
#recording ⇒ Object
(also: #recording?)
readonly
Returns the value of attribute recording.
-
#sessions ⇒ Object
readonly
Returns the value of attribute sessions.
Instance Method Summary collapse
-
#initialize(name, options) ⇒ Cassette
constructor
A new instance of Cassette.
- #next_session ⇒ Object
- #save ⇒ Object
Constructor Details
#initialize(name, options) ⇒ Cassette
Returns a new instance of Cassette.
12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
# File 'lib/simple_websocket_vcr/cassette.rb', line 12 def initialize(name, ) @name = name @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 |
Instance Attribute Details
#name ⇒ Object (readonly)
Returns the value of attribute name.
8 9 10 |
# File 'lib/simple_websocket_vcr/cassette.rb', line 8 def name @name end |
#options ⇒ Object (readonly)
Returns the value of attribute options.
8 9 10 |
# File 'lib/simple_websocket_vcr/cassette.rb', line 8 def @options end |
#recording ⇒ Object (readonly) Also known as: recording?
Returns the value of attribute recording.
8 9 10 |
# File 'lib/simple_websocket_vcr/cassette.rb', line 8 def recording @recording end |
#sessions ⇒ Object (readonly)
Returns the value of attribute sessions.
8 9 10 |
# File 'lib/simple_websocket_vcr/cassette.rb', line 8 def sessions @sessions end |
Instance Method Details
#next_session ⇒ Object
28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
# 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 ⇒ Object
44 45 46 47 48 49 50 51 52 53 54 55 |
# 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 |