Estou vasculhando um monte de sites recentemente e fiquei entediado com o uso File.write
para 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 Shared
módulo com o cache
método que include
eu 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