Spec-Zone.ru › Homebrew

Класс: 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.

Параметры:

  • type (Symbol)


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. Третьим сторонам следует по возможности избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.

Передаёт управление блоку, предоставляя базу данных хранилища кэша. Закрывает базу данных после использования, если она была загружена.

Параметры:

  • type (Symbol)
  • _blk (T.proc.params(arg0: CacheStoreDatabase[T.anything, T.anything]).returns(T.type_parameter(:U)))

Возвращает:

  • (T.type_parameter(:U))


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.

Возвращает:

  • (Boolean)


104
105
106
# File 'cache_store.rb', line 104

def created?
  cache_path.exist?
end

#delete(key) ⇒ void

Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. Третьим сторонам следует по возможности избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.

Этот метод возвращает неопределённое значение.

Удаляет значение из базовой базы данных (если оно уже существует).

Параметры:

  • key (Key)


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 для базовой базы данных.

Параметры:

  • block (T.proc.params(arg0: Key).returns(BasicObject))

Возвращает:

  • (Hash{Key => Value})


134
135
136
# File 'cache_store.rb', line 134

def each_key(&block)
  db.each_key(&block)
end

#empty? ⇒ Boolean

Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. Третьим сторонам следует по возможности избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.

Возвращает true, если кеш пуст.

Возвращает:

  • (Boolean)


126
127
128
# File 'cache_store.rb', line 126

def empty?
  db.empty?
end

#get(key) ⇒ Value?

Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. Третьим сторонам следует по возможности избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.

Получает значение из базовой базы данных (если оно уже существует).

Параметры:

  • key (Key)

Возвращает:

  • (Value, nil)


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. Третьим сторонам следует по возможности избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.

Возвращает время изменения файла кеша (если он уже существует).

Возвращает:

  • (Time, nil)


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 для базовой базы данных.

Параметры:

  • block (T.proc.params(arg0: Key, arg1: Value).returns(BasicObject))

Возвращает:

  • (Hash{Key => Value})


120
121
122
# File 'cache_store.rb', line 120

def select(&block)
  db.select(&block)
end

#set(key, value) ⇒ void

Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. Третьим сторонам следует по возможности избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.

Этот метод возвращает неопределённое значение.

Устанавливает значение в базовой базе данных (и создаёт её при необходимости).

Параметры:

  • key (Key)
  • value (Value)


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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API