class Camcorder::Recorder
Attributes
filename[R]
recordings[R]
Public Class Methods
new(filename, verify_recordings: Camcorder.config.verify_recordings)
click to toggle source
# File lib/camcorder/recorder.rb, line 11 def initialize(filename, verify_recordings: Camcorder.config.verify_recordings) @filename = filename @recordings = {} @changed = false @verify_recordings = verify_recordings end
Public Instance Methods
commit()
click to toggle source
# File lib/camcorder/recorder.rb, line 35 def commit return unless @changed FileUtils.mkdir_p File.dirname(filename) File.open(filename, 'w') {|f| YAML.dump(recordings, f) } end
record(key, &block)
click to toggle source
# File lib/camcorder/recorder.rb, line 41 def record(key, &block) if @replaying if recordings.has_key?(key) recordings[key].replay else raise PlaybackError.new(key) end else begin recording = Recording.new result = recording.record(&block) ensure @changed = true if recordings.has_key?(key) unless verify_recordings(recordings[key], recording) raise RecordingError.new(key) end else recordings[key] = recording end result end end end
start()
click to toggle source
# File lib/camcorder/recorder.rb, line 25 def start if File.exists?(filename) @recordings = YAML.load_file(filename) @replaying = true else @recordings = {} @replaying = false end end
transaction() { || ... }
click to toggle source
# File lib/camcorder/recorder.rb, line 18 def transaction(&block) start yield ensure commit end
verify_recordings(a, b)
click to toggle source
# File lib/camcorder/recorder.rb, line 66 def verify_recordings(a, b) if @verify_recordings.is_a?(Proc) @verify_recordings.call(a, b) elsif @verify_recordings a == b else true end end