класс ActiveStorage::Service
Абстрактный класс, служащий интерфейсом для конкретных сервисов.
Доступные сервисы:
-
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(
:Disk,
root: Pathname("/foo/bar/storage")
)
Атрибуты
Публичные методы класса
# File activestorage/lib/active_storage/service.rb, line 50 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 94 def delete(key) raise NotImplementedError end
Удалить файл по ключу key.
# File activestorage/lib/active_storage/service.rb, line 99 def delete_prefixed(prefix) raise NotImplementedError end
Удалить файлы, ключи которых начинаются с префикса prefix.
# File activestorage/lib/active_storage/service.rb, line 80 def download(key) raise NotImplementedError end
Возвратить содержимое файла по ключу key.
# File activestorage/lib/active_storage/service.rb, line 85 def download_chunk(key, range) raise NotImplementedError end
Возвратить частичное содержимое в байтах range файла по ключу key.
# File activestorage/lib/active_storage/service.rb, line 104 def exist?(key) raise NotImplementedError end
Возвратить true, если файл существует по ключу key.
# File activestorage/lib/active_storage/service.rb, line 136
def headers_for_direct_upload(key, filename:, content_type:, content_length:, checksum:)
{}
end Возвращает Hash заголовков для запросов url_for_direct_upload.
# File activestorage/lib/active_storage/service.rb, line 89 def open(*args, **options, &block) ActiveStorage::Downloader.new(self).open(*args, **options, &block) end
# File activestorage/lib/active_storage/service.rb, line 140 def public? @public end
# File activestorage/lib/active_storage/service.rb, line 76 def update_metadata(key, **metadata) end
Обновить метаданные для файла, идентифицированного по ключу key в сервисе. Переопределять в подклассах только в том случае, если сервис нуждается в хранении определённых метаданных, которые должны быть обновлены при идентификации.
# File activestorage/lib/active_storage/service.rb, line 69 def upload(key, io, checksum: nil, **options) raise NotImplementedError end
Загрузить io по указанному ключу key. Если указана контрольная сумма checksum, сервис обеспечит соответствие при завершении загрузки или вызовет исключение ActiveStorage::IntegrityError.
# File activestorage/lib/active_storage/service.rb, line 112
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 131 def url_for_direct_upload(key, expires_in:, content_type:, content_length:, checksum:) raise NotImplementedError end
Возвращает подписанный временный URL для загрузки файла по ключу key. URL будет действовать в течение указанного количества секунд в expires_in. Вы также должны указать content_type, content_length, и checksum загружаемого файла. Все эти атрибуты будут проверены сервисом при загрузке.
© 2004–2020 David Heinemeier Hansson
Licensed under the MIT License.