Spec-Zone.ru › Ruby on Rails 7.2

class ActiveStorage::Service

Parent:
Объект

Служба 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") } }
)

Атрибуты

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 для общедоступных файлов и возвращает временный 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