В ruby, вы можете вызвать удаленный API, как это
def get_remote_date
Net::HTTP.get('example.com', '/index.json')
end
Если вы делаете gem install vcr
, вы можете сделать это
def get_remote_date
VCR.use_cassette("cassette_001") do
Net::HTTP.get('example.com', '/index.json')
end
end
VCR запись / воспроизведение помогает во время разработки, когда удаленный API стоит дорого. Использовать или нет vcr необязательно, указывается первым аргументом функции:
def get_remote_date(should_use_vcr)
VCR.use_cassette("cassette_001") do
Net::HTTP.get('example.com', '/index.json')
end
end
Мой вопрос: как мне переписать метод так, чтобы "block wrapping" / "VCR.use_cassette("cassette_001") do "зависит от логического значения локальной переменной should_use_vcr.
Я мог бы сделать
def get_remote_date(should_use_vcr)
if conditional here
VCR.use_cassette("cassette_001") do
Net::HTTP.get('example.com', '/index.json')
end
else
Net::HTTP.get('example.com', '/index.json')
end
end
, но для сложного метода, который имеет" Net :: HTTP. get ("плюс еще десяток строк, слишком много дублирования кода, поэтому ищите более удобный способ сделать это.