Spec-Zone.ru › Ruby on Rails 7.2

класс ActiveSupport::EncryptedFile

Родитель:
Объект

Константы

CIPHER

Атрибуты

content_path[R]
env_key[R]
key_path[R]
raise_if_missing_key[R]

Публичные методы класса

generate_key() Показать исходный код
# File activesupport/lib/active_support/encrypted_file.rb, line 31
def self.generate_key
  SecureRandom.hex(ActiveSupport::MessageEncryptor.key_len(CIPHER))
end
new(content_path:, key_path:, env_key:, raise_if_missing_key:) Показать исходный код
# File activesupport/lib/active_support/encrypted_file.rb, line 42
def initialize(content_path:, key_path:, env_key:, raise_if_missing_key:)
  @content_path = Pathname.new(content_path).yield_self { |path| path.symlink? ? path.realpath : path }
  @key_path = Pathname.new(key_path)
  @env_key, @raise_if_missing_key = env_key, raise_if_missing_key
end

Публичные методы экземпляра

change(&block) Показать исходный код
# File activesupport/lib/active_support/encrypted_file.rb, line 83
def change(&block)
  writing read, &block
end
key() Показать исходный код
# File activesupport/lib/active_support/encrypted_file.rb, line 52
def key
  read_env_key || read_key_file || handle_missing_key
end

Возвращает криптографический ключ, сначала пытаясь получить его из переменной окружения, указанной в env_key, а затем из файла ключа, указанного в key_path. Если raise_if_missing_key имеет значение true, генерирует исключение MissingKeyError, если переменная окружения не задана и файл ключа не существует.

key?() Показать исходный код
# File activesupport/lib/active_support/encrypted_file.rb, line 58
def key?
  read_env_key || read_key_file
end

Возвращает истинное значение, если key имеет истинное значение. В противном случае возвращает ложное значение. В отличие от key, не генерирует исключение MissingKeyError, когда raise_if_missing_key имеет значение true.

read() Показать исходный код
# File activesupport/lib/active_support/encrypted_file.rb, line 70
def read
  if !key.nil? && content_path.exist?
    decrypt content_path.binread
  else
    raise MissingContentError, content_path
  end
end

Читает файл и возвращает дешифрованное содержимое.

Возникают следующие исключения:

  • MissingKeyError, если ключ отсутствует и raise_if_missing_key имеет значение true.

  • MissingContentError, если зашифрованный файл не существует или ключ отсутствует по другим причинам.

  • ActiveSupport::MessageEncryptor::InvalidMessage, если содержимое не может быть дешифровано или проверено.

write(contents) Показать исходный код
# File activesupport/lib/active_support/encrypted_file.rb, line 78
def write(contents)
  IO.binwrite "#{content_path}.tmp", encrypt(contents)
  FileUtils.mv "#{content_path}.tmp", content_path
end

© 2004–2021 David Heinemeier Hansson
Licensed under the MIT License.

Spec-Zone.ru

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