Sha256: 6e42f893a35d921a9efbdf58caea2071ec3922a5a1ff25e71a8d813138d1591d
Contents?: true
Size: 1.79 KB
Versions: 3
Compression:
Stored size: 1.79 KB
Contents
require 'fileutils' module VCR class Cassette class Persisters # The only built-in cassette persister. Persists cassettes to the file system. module FileSystem extend self # @private attr_reader :storage_location # @private def storage_location=(dir) FileUtils.mkdir_p(dir) if dir @storage_location = dir ? absolute_path_for(dir) : nil end # Gets the cassette for the given storage key (file name). # # @param [String] file_name the file name # @return [String] the cassette content def [](file_name) path = absolute_path_to_file(file_name) return nil unless File.exist?(path) File.binread(path) end # Sets the cassette for the given storage key (file name). # # @param [String] file_name the file name # @param [String] content the content to store def []=(file_name, content) path = absolute_path_to_file(file_name) directory = File.dirname(path) FileUtils.mkdir_p(directory) unless File.exist?(directory) File.binwrite(path, content) end # @private def absolute_path_to_file(file_name) return nil unless storage_location File.join(storage_location, sanitized_file_name_from(file_name)) end private def absolute_path_for(path) Dir.chdir(path) { Dir.pwd } end def sanitized_file_name_from(file_name) parts = file_name.to_s.split('.') if parts.size > 1 && !parts.last.include?(File::SEPARATOR) file_extension = '.' + parts.pop end parts.join('.').gsub(/[^[:word:]\-\/]+/, '_') + file_extension.to_s end end end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
vcr-5.1.0 | lib/vcr/cassette/persisters/file_system.rb |
vcr-5.0.0 | lib/vcr/cassette/persisters/file_system.rb |
vcr-4.0.0 | lib/vcr/cassette/persisters/file_system.rb |