/ / Como faço cache de objetos específicos do usuário - ruby

Como faço para armazenar em cache objetos específicos do usuário - ruby

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 № 1

Depende 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.