Gostaria de armazenar em cache o objeto "foo" para uma combinação específica de chave / segredo. Como devo fazer isso em ruby?
require "foo/api"
foo = Foo::API::Client.new(key, secret)
Respostas:
1 para resposta № 1Depende do que você usa para armazenar em cache e qual tipo de cache você deseja. Independentemente do tipo de cache, o procedimento comum é usar chave / segredo como parte da chave de cache.
Por exemplo, usando memoization.
cache = {}
cache["foo-#{key}:{secret}"] ||= Foo::API::Client.new(key, secret)
Você pode embrulhar tudo em uma classe ou método.
def client(key, secret)
@clients ||= {}
@clients["client-#{key}:{secret}"] ||= Foo::API::Client.new(key, secret)
end
Se você quiser um cache externo, como cache de arquivos ou cache memcached, simplesmente adote a mesma técnica e componha a chave de cache usando a chave e o segredo.
Se chave e segredo são sequências "secretas", você pode computar um hash SHA ou MD5 e usá-lo como chave, em vez dos valores claros.