/ / Як я можу кешувати конкретні об'єкти користувача - рубій

Як я можу кешувати конкретні об'єкти - рубій

Я хотів би кешувати об'єкт "foo" для певної ключі / секретної комбінації. Як я повинен йти про це в рубінах?

require "foo/api"

foo = Foo::API::Client.new(key, secret)

Відповіді:

1 для відповіді № 1

Це залежить від того, що ви використовуєте для кешування, і який тип кешу ви хочете. Незалежно від типу кеш-пам'яті, загальною процедурою є використання ключа / секретної як частина кеш-пам'яті.

Наприклад, використання мемуалізації.

cache = {}
cache["foo-#{key}:{secret}"] ||= Foo::API::Client.new(key, secret)

Ви можете загорнути всі в класі або методі.

def client(key, secret)
@clients ||= {}
@clients["client-#{key}:{secret}"] ||= Foo::API::Client.new(key, secret)
end

Якщо ви хочете отримати зовнішній кеш-пам'ять, наприклад, кеш файл або кеш пам'яті memcached, просто застосуйте ту саму техніку та складіть кеш-пам'ять за допомогою ключа та таємниці.

Якщо ключ і таємниця - "секретні" рядки, ви можете обчислити хеш SHA або MD5 і використовувати його як ключ, а не чіткі значення.