Cache simples ao raspar com Ruby

Estou vasculhando um monte de sites recentemente e fiquei entediado com o uso File.writepara armazenar versões em cache de sites. Como ainda estou desenvolvendo o script, não quero que chegue ao site real todas as vezes. Uma maneira tão simples de consertar isso é com a gema do videocassete . Embora feito principalmente para teste, você também pode usá-lo para este tipo de tarefas.

Primeiro você precisa de algum tipo de arquivo de configuração que carregue antes do seu script real. Eu tenho em config/vcr.rb:

VCR.configure do |c|
c
.cassette_library_dir = 'cassettes'
c
.hook_into :webmock
c
.allow_http_connections_when_no_cassette = true
end

Então eu tenho um Sharedmódulo com o cachemétodo que includeeu preciso desta funcionalidade em todas as classes:

module Shared
def cache name
VCR
.use_cassette name do
yield
end
end
end

E agora você pode usar essa mágica para ter o site que está copiando instantaneamente em cache:

def github_for user
cache
"gh-#{user}" do
response
= open("https://api.github.com/users/#{user}").read
JSON
[response]
end
end