class ActiveStorage::Service
Сервис Active Storage
Абстрактный класс, служащий интерфейсом для конкретных сервисов.
Доступные сервисы:
-
Disk, для управления вложениями, сохранёнными непосредственно на жёстком диске. -
GCS, для управления вложениями через Google Cloud Storage. -
S3, для управления вложениями через Amazon S3. -
AzureStorage, для управления вложениями через Microsoft Azure Storage. -
Mirror, чтобы иметь возможность использовать несколько сервисов для управления вложениями.
В приложении Rails вы можете настроить свои сервисы через сгенерированный файл config/storage.yml и сослаться на один из перечисленных констант под ключом service. Например:
local:
service: Disk
root: <%= Rails.root.join("storage") %> Вы можете ознакомиться с конструктором сервиса, чтобы узнать, какие ключи требуются.
Затем в конфигурации приложения вы можете указать используемый сервис следующим образом:
config.active_storage.service = :local
Если вы используете Active Storage вне приложения Ruby on Rails, вы можете настроить используемый сервис следующим образом:
ActiveStorage::Blob.service = ActiveStorage::Service.configure(
:local,
{ local: {service: "Disk", root: Pathname("/tmp/foo/storage") } }
)
Атрибуты
Публичные методы класса
# File activestorage/lib/active_storage/service.rb, line 52 def configure(service_name, configurations) Configurator.build(service_name, configurations) end
Настройка сервиса Active Storage по имени из набора конфигураций, обычно загружаемых из файла YAML. Движок Active Storage использует это для установки глобального сервиса Active Storage при запуске приложения.
Публичные методы экземпляра
# File activestorage/lib/active_storage/service.rb, line 96
def compose(source_keys, destination_key, filename: nil, content_type: nil, disposition: nil, custom_metadata: {})
raise NotImplementedError
end Объединение нескольких файлов в один «составной» файл.
# File activestorage/lib/active_storage/service.rb, line 101 def delete(key) raise NotImplementedError end
Удаление файла по ключу key.
# File activestorage/lib/active_storage/service.rb, line 106 def delete_prefixed(prefix) raise NotImplementedError end
Удаление файлов с ключами, начинающимися с prefix.
# File activestorage/lib/active_storage/service.rb, line 82 def download(key) raise NotImplementedError end
Возвращение содержимого файла по ключу key.
# File activestorage/lib/active_storage/service.rb, line 87 def download_chunk(key, range) raise NotImplementedError end
Возвращение частичного содержимого в байтовом диапазоне range файла по ключу key.
# File activestorage/lib/active_storage/service.rb, line 111 def exist?(key) raise NotImplementedError end
Возвращает true, если файл существует по ключу key.
# File activestorage/lib/active_storage/service.rb, line 143
def headers_for_direct_upload(key, filename:, content_type:, content_length:, checksum:, custom_metadata: {})
{}
end Возвращает Hash заголовков для запросов url_for_direct_upload.
# File activestorage/lib/active_storage/service.rb, line 91 def open(*args, **options, &block) ActiveStorage::Downloader.new(self).open(*args, **options, &block) end
# File activestorage/lib/active_storage/service.rb, line 147 def public? @public end
# File activestorage/lib/active_storage/service.rb, line 78 def update_metadata(key, **metadata) end
Обновление метаданных для файла, идентифицированного по ключу key в сервисе. Переопределять в подклассах только в случае необходимости хранения специфических метаданных, которые нужно обновлять при идентификации.
# File activestorage/lib/active_storage/service.rb, line 71 def upload(key, io, checksum: nil, **options) raise NotImplementedError end
Загрузка io в указанный key. Если предоставлен checksum, сервис проверит соответствие при завершении загрузки или поднимет исключение ActiveStorage::IntegrityError.
# File activestorage/lib/active_storage/service.rb, line 119
def url(key, **options)
instrument :url, key: key do |payload|
generated_url =
if public?
public_url(key, **options)
else
private_url(key, **options)
end
payload[:url] = generated_url
generated_url
end
end Возвращает URL для файла по ключу key. Возвращает постоянный URL для общедоступных файлов и временный URL для частных файлов. Для частных файлов можно предоставить disposition (:inline или :attachment), filename, и content_type, с которыми файл будет предоставляться по запросу. Кроме того, можно указать срок действия URL в секундах, указанный в expires_in.
# File activestorage/lib/active_storage/service.rb, line 138
def url_for_direct_upload(key, expires_in:, content_type:, content_length:, checksum:, custom_metadata: {})
raise NotImplementedError
end Возвращает подписанный временный URL для загрузки файла напрямую в key. URL будет действовать в течение указанного количества секунд в expires_in. Также необходимо указать content_type, content_length, и checksum загружаемого файла. Все эти атрибуты будут проверены сервисом при загрузке.
© 2004–2021 David Heinemeier Hansson
Licensed under the MIT License.