Spec-Zone.ru › Ruby on Rails 8.1

класс ActiveStorage::Service

Родительский класс:
Object

Сервис Active Storage

Абстрактный класс, выступающий в качестве интерфейса для конкретных сервисов.

Доступны следующие сервисы:

  • Disk для управления вложениями, сохранёнными непосредственно на жёстком диске.

  • GCS для управления вложениями с помощью Google Cloud Storage.

  • S3 для управления вложениями с помощью Amazon S3.

  • 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") } }
)

Атрибуты

name [RW]

Открытые методы класса

configure (service_name, configurations) Показать исходный код
# 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.

Открытые методы экземпляра

compose (source_keys, destination_key, filename: nil, content_type: nil, disposition: nil, custom_metadata: {}) Показать исходный код
# 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

Объединяет несколько файлов в один «составной» файл.

delete (key) Показать исходный код
# File activestorage/lib/active_storage/service.rb, line 101
def delete(key)
  raise NotImplementedError
end

Удаляет файл по key.

delete_prefixed (prefix) Показать исходный код
# File activestorage/lib/active_storage/service.rb, line 106
def delete_prefixed(prefix)
  raise NotImplementedError
end

Удаляет файлы по ключам, начинающимся с prefix.

download (key) Показать исходный код
# File activestorage/lib/active_storage/service.rb, line 82
def download(key)
  raise NotImplementedError
end

Возвращает содержимое файла по key.

download_chunk (key, range) Показать исходный код
# File activestorage/lib/active_storage/service.rb, line 87
def download_chunk(key, range)
  raise NotImplementedError
end

Возвращает часть содержимого файла в диапазоне байтов range по key.

exist? (key) Показать исходный код
# File activestorage/lib/active_storage/service.rb, line 111
def exist?(key)
  raise NotImplementedError
end

Возвращает true, если файл существует по key.

headers_for_direct_upload (key, filename:, content_type:, content_length:, checksum:, custom_metadata: {}) Показать исходный код
# 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.

open (*args, **options, &block) Показать исходный код
# File activestorage/lib/active_storage/service.rb, line 91
def open(*args, **options, &block)
  ActiveStorage::Downloader.new(self).open(*args, **options, &block)
end
public? () Показать исходный код
# File activestorage/lib/active_storage/service.rb, line 147
def public?
  @public
end
update_metadata (key, **metadata) Показать исходный код
# File activestorage/lib/active_storage/service.rb, line 78
def update_metadata(key, **metadata)
end

Обновляет метаданные файла, идентифицированного по key в сервисе. Переопределяйте метод в подклассах только в том случае, если сервису необходимо хранить специальные метаданные, которые нужно обновлять после идентификации.

upload (key, io, checksum: nil, **options) Показать исходный код
# File activestorage/lib/active_storage/service.rb, line 71
def upload(key, io, checksum: nil, **options)
  raise NotImplementedError
end

Загружает io по указанному key. Если указан checksum, сервис проверит совпадение после завершения загрузки или вызовет исключение ActiveStorage::IntegrityError.

url (key, **options) Показать исходный код
# 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, а для закрытых — временный. Для закрытых файлов можно указать disposition (:inline или :attachment), filename и content_type, с которыми файл будет предоставляться по запросу. Кроме того, можно указать срок действия URL в секундах, заданный в expires_in.

url_for_direct_upload (key, expires_in:, content_type:, content_length:, checksum:, custom_metadata: {}) Показать исходный код
# 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, на который можно отправить PUT-запрос для прямой загрузки файла в key. URL будет действителен в течение количества секунд, указанного в expires_in. Также необходимо указать content_type, content_length и checksum загружаемого файла. Сервис проверит все эти атрибуты при загрузке.

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

Spec-Zone.ru

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