Ruby VCR gem отключить перезапись, когда запись доступна - PullRequest
0 голосов
/ 16 апреля 2020

Я хочу записать ответ API один раз и использовать его навсегда, но похоже, что видеомагнитофон хочет перезаписать по истечении некоторого времени.

Я пытался гуглить, как это отключить. Найден re_record_interval, но, похоже, он не работает.

Моя текущая настройка VCS spec/support/vcr_setup.rb

# frozen_string_literal: true

VCR.configure do |c|
  c.cassette_library_dir = 'spec/vcr'
  c.hook_into :webmock
  c.configure_rspec_metadata!
  c.allow_http_connections_when_no_cassette = false
  c.default_cassette_options = {
    record: :none,
    re_record_interval: nil,
    match_requests_on: %i[method uri],
    allow_playback_repeats: true
  }
  c.debug_logger = $stdout
end

Это журнал отладки с видеомагнитофона

[Cassette: 'some-name./1:1:6:2:1:1'] Initialized with options: {:record=>:none, :record_on_error=>true, :match_requests_on=>[:method, :uri], :allow_unused_http_interactions=>true, :serialize_with=>:yaml, :persist_with=>:file_system, :re_record_interval=>nil, :allow_playback_repeats=>true}
Scraping url: some-url
[webmock] Handling request: [get some-url] (disabled: false)
  [Cassette: 'some-name/1:1:6:2:1:1'] Initialized HTTPInteractionList with request matchers [:method, :uri] and 0 interaction(s): {  }
[webmock] Identified request type (unhandled) for [get some-url]

Примечание. Записанный файл получен за час до этого, но теперь видеомагнитофон пытается создать новый HTTP-запрос и создать новый файл записи.

1 Ответ

0 голосов
/ 16 апреля 2020

После некоторой отладки выяснилось, что имя файла vcr на самом деле было rpse c идентификатор области. Вы можете проверить метаданные rspe c здесь, чтобы узнать, как выглядит идентификатор области видимости. https://www.tutorialspoint.com/rspec/rspec_metadata.htm

scope_id - это что-то вроде "1:1:6:2:1:1", что означает 1-й блок> 1-й блок> 6-й блок и так далее. Вы поняли.

Это означает, что если вы измените порядок блоков в файле spe c, это также изменит записанный файл.

...