Класс: CacheStoreDatabase Приватный
- Наследует:
- Object
- Object
- CacheStoreDatabase
- Расширен:
- T::Generic
- Определён в:
- cache_store.rb
Обзор
Этот класс является частью приватного API. Этот класс можно использовать только в репозитории Homebrew/brew. Третьим сторонам следует по возможности избегать использования этого класса, поскольку он может быть удалён или изменён без предупреждения.
CacheStoreDatabase служит интерфейсом к механизму постоянного хранения данных, находящемуся в HOMEBREW_CACHE.
Краткое описание констант свернуть
- Key =
Эта константа является частью приватного API. Эту константу можно использовать только в репозитории Homebrew/brew. Третьим сторонам следует по возможности избегать использования этой константы, поскольку она может быть удалена или изменена без предупреждения.
Элементы типов Sorbet по своей конструкции изменяемы и не могут быть заморожены.
type_member- Value =
Эта константа является частью приватного API. Эту константу можно использовать только в репозитории Homebrew/brew. Третьим сторонам следует по возможности избегать использования этой константы, поскольку она может быть удалена или изменена без предупреждения.
Элементы типов Sorbet по своей конструкции изменяемы и не могут быть заморожены.
type_member
Краткое описание методов класса свернуть
- .use(type, &_blk) ⇒ T.type_parameter(:U) приватный
Передаёт управление блоку, предоставляя базу данных хранилища кэша.
Краткое описание методов экземпляра свернуть
- #clear! ⇒ void приватный
Удаляет всё содержимое из базовой базы данных (если она уже существует).
- #created? ⇒ Boolean приватный
Возвращает
true, если файл кэша был создан для указанного@type. - #delete(key) ⇒ void приватный
Удаляет значение из базовой базы данных (если оно уже существует).
- #each_key(&block) ⇒ Hash{Key => Value} приватный
Выполняет
each_keyдля базовой базы данных. - #empty? ⇒ Boolean приватный
Возвращает
true, если кэш пуст. - #get(key) ⇒ Value? приватный
Получает значение из базовой базы данных (если оно уже существует).
- #initialize(type) ⇒ void конструктор приватный
Создаёт CacheStoreDatabase.
- #mtime ⇒ Time? приватный
Возвращает время изменения файла кэша (если он уже существует).
- #select(&block) ⇒ Hash{Key => Value} приватный
Выполняет
selectдля базовой базы данных. - #set(key, value) ⇒ void приватный
Устанавливает значение в базовой базе данных (и создаёт её при необходимости).
- #write_if_dirty! ⇒ void приватный
Закрывает базовую базу данных (если она создана и открыта).
Подробное описание конструкторов
#initialize(type) ⇒ void
Этот метод является частью приватного API. Этот метод можно использовать только в репозитории Homebrew/brew. Третьим сторонам следует по возможности избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.
Создаёт CacheStoreDatabase.
55 56 57 58 | # File 'cache_store.rb', line 55 def initialize(type) @type = type @dirty = T.let(false, T.nilable(T::Boolean)) end |
Подробное описание методов класса
.use(type, &_blk) ⇒ T.type_parameter(:U)
Этот метод является частью приватного API. Этот метод можно использовать только в репозитории Homebrew/brew. Третьим сторонам следует по возможности избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.
Передаёт управление блоку, предоставляя базу данных хранилища кэша. Закрывает базу данных после использования, если она была загружена.
28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 | # File 'cache_store.rb', line 28 def self.use(type, &_blk) @db_type_reference_hash ||= T.let({}, T.nilable(T::Hash[T.untyped, T.untyped])) @db_type_reference_hash[type] ||= {} type_ref = @db_type_reference_hash[type] type_ref[:count] ||= 0 type_ref[:count] += 1 type_ref[:db] ||= CacheStoreDatabase.new(type) return_value = yield(type_ref[:db]) if type_ref[:count].positive? type_ref[:count] -= 1 else type_ref[:count] = 0 end if type_ref[:count].zero? type_ref[:db].write_if_dirty! type_ref.delete(:db) end return_value end |
Подробное описание методов экземпляра
#clear! ⇒ void
Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. Третьим сторонам следует по возможности избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.
Этот метод возвращает неопределённое значение.
Удаляет всё содержимое из базовой базы данных (если она уже существует).
86 87 88 89 90 91 | # File 'cache_store.rb', line 86 def clear! return unless created? dirty! db.clear end |
#created? ⇒ Boolean
Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. Третьим сторонам следует по возможности избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.
Возвращает true, если файл кеша был создан для указанного @type.
104 105 106 | # File 'cache_store.rb', line 104 def created? cache_path.exist? end |
#delete(key) ⇒ void
Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. Третьим сторонам следует по возможности избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.
Этот метод возвращает неопределённое значение.
Удаляет значение из базовой базы данных (если оно уже существует).
77 78 79 80 81 82 | # File 'cache_store.rb', line 77 def delete(key) return unless created? dirty! db.delete(key) end |
#each_key(&block) ⇒ Hash{Key => Value}
Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. Третьим сторонам следует по возможности избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.
Выполняет each_key для базовой базы данных.
134 135 136 | # File 'cache_store.rb', line 134 def each_key(&block) db.each_key(&block) end |
#empty? ⇒ Boolean
Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. Третьим сторонам следует по возможности избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.
Возвращает true, если кеш пуст.
126 127 128 | # File 'cache_store.rb', line 126 def empty? db.empty? end |
#get(key) ⇒ Value?
Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. Третьим сторонам следует по возможности избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.
Получает значение из базовой базы данных (если оно уже существует).
69 70 71 72 73 | # File 'cache_store.rb', line 69 def get(key) return unless created? db[key] end |
#mtime ⇒ Time?
Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. Третьим сторонам следует по возможности избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.
Возвращает время изменения файла кеша (если он уже существует).
110 111 112 113 114 | # File 'cache_store.rb', line 110 def mtime return unless created? cache_path.mtime end |
#select(&block) ⇒ Hash{Key => Value}
Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. Третьим сторонам следует по возможности избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.
Выполняет select для базовой базы данных.
120 121 122 | # File 'cache_store.rb', line 120 def select(&block) db.select(&block) end |
#set(key, value) ⇒ void
Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. Третьим сторонам следует по возможности избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.
Этот метод возвращает неопределённое значение.
Устанавливает значение в базовой базе данных (и создаёт её при необходимости).
62 63 64 65 | # File 'cache_store.rb', line 62 def set(key, value) dirty! db[key] = value end |
#write_if_dirty! ⇒ void
Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. Третьим сторонам следует по возможности избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.
Этот метод возвращает неопределённое значение.
Закрывает базовую базу данных (если она создана и открыта).
95 96 97 98 99 100 | # File 'cache_store.rb', line 95 def write_if_dirty! return unless dirty? cache_path.dirname.mkpath cache_path.atomic_write(JSON.dump(@db)) end |
© 2009–present Homebrew contributors
Licensed under the BSD 2-Clause License.
https://docs.brew.sh/rubydoc/CacheStoreDatabase.html