Spec-Zone.ru › Ruby on Rails 7.0

class ActiveStorage::Service

Parent:
Объект

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

Доступные сервисы:

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

Атрибуты

name[RW]

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

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

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

compose(source_keys, destination_key, filename: nil, content_type: nil, disposition: nil, custom_metadata: {}) Показать исходный код
# File activestorage/lib/active_storage/service.rb, line 94
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 99
def delete(key)
  raise NotImplementedError
end

Удалить файл по ключу key.

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

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

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

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

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

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

exist?(key) Показать исходный код
# File activestorage/lib/active_storage/service.rb, line 109
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 141
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 89
def open(*args, **options, &block)
  ActiveStorage::Downloader.new(self).open(*args, **options, &block)
end
public?() Показать исходный код
# File activestorage/lib/active_storage/service.rb, line 145
def public?
  @public
end
update_metadata(key, **metadata) Показать исходный код
# File activestorage/lib/active_storage/service.rb, line 76
def update_metadata(key, **metadata)
end

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

upload(key, io, checksum: nil, **options) Показать исходный код
# File activestorage/lib/active_storage/service.rb, line 69
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 117
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.

url_for_direct_upload(key, expires_in:, content_type:, content_length:, checksum:, custom_metadata: {}) Показать исходный код
# File activestorage/lib/active_storage/service.rb, line 136
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