1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/dengqinsi-fog-aliyun

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

Fog::Aliyun

Установка

Добавьте следующую строку в Gemfile вашего приложения:

gem 'fog-aliyun'

Затем выполните:

    $ bundle

Или установите его самостоятельно следующим образом:

    $ gem install fog-aliyun

Использование

Прежде чем вы сможете использовать fog-aliyun, вы должны потребовать его в своём приложении:

require 'fog/aliyun'

Поскольку хранить учётные данные в исходном коде — плохая практика, вам следует загрузить их из файла конфигурации по умолчанию для тумана: ~/.fog. Этот файл может выглядеть так:

default:
  :aliyun_accesskey_id:     <YOUR_ACCESS_KEY_ID>,
  :aliyun_accesskey_secret: <YOUR_SECRET_ACCESS_KEY>,
  :aliyun_oss_endpoint:     <YOUR_OSS_ENDPOINT>,
  :aliyun_oss_location:     <YOUR_OSS_LOACTION>,
  :aliyun_oss_bucket:       <YOUR_OSS_BUCKET>

Подключение к OSS

conn = Fog::Storage[:aliyun]

Если вы не изменяли файл конфигурации по умолчанию или не хотите его использовать, вы можете загрузить свои учётные данные следующим образом:

opt = {
  :provider                => 'aliyun',
  :aliyun_accesskey_id     => <YOUR_ACCESS_KEY_ID>,
  :aliyun_accesskey_secret => <YOUR_SECRET_ACCESS_KEY>,
  :aliyun_oss_endpoint     => <YOUR_OSS_ENDPOINT>,
  :aliyun_oss_location     => <YOUR_OSS_LOACTION>,
  :aliyun_oss_bucket       => <YOUR_OSS_BUCKET>,
}
conn = Fog::Storage.new(opt)

Абстракции Fog::Aliyun

Fog::Aliyun предоставляет как модель, так и запрос абстракции. Абстракция запроса обеспечивает наиболее эффективный интерфейс, а абстракция модели оборачивает абстракцию запроса, чтобы обеспечить удобный интерфейс, подобный ActiveModel.

Уровень запросов

Объект Fog::Storage поддерживает ряд методов, которые заключают в себе отдельные HTTP-запросы к API OSS.

Чтобы увидеть список запросов, поддерживаемых службой хранения:

conn.requests

Это возвращает:

[[nil, :copy_object], [nil, :delete_bucket], [nil, :delete_object], [nil, :get_bucket], [nil, :get_object], [nil, :get_object_http_url], [nil, :get_object_https_url], [nil, :head_object], [nil, :put_bucket], [nil, :put_object], [nil, :list_buckets], [nil, :list_objects], [nil, :get_containers], [nil, :get_container], [nil, :delete_container], [nil, :put_container]]

Примеры запросов (list_buckets)

Чтобы запросить все сегменты:

conn.list_buckets

И это возвращает следующее:

[{"Location"=>"oss-cn-beijing", "Name"=>"dt1", "CreationDate"=>"2015-07-30T08:38:02.000Z"},  {"Location"=>"oss-cn-shenzhen", "Name"=>"ruby1", "CreationDate"=>"2015-07-30T02:22:34.000Z"}, {"Location"=>"oss-cn-qingdao", "Name"=>"yuanhang123", "CreationDate"=>"2015-05-18T03:06:31.000Z"}]

Вы также можете запросить следующим образом;

conn.list_buckets(:prefix=>"pre")

Вот краткое описание необязательных параметров:

Parameters Description
:prefix Имя сегмента результатов должно начинаться с «префикса». Если он не установлен, информация о префиксе не будет отфильтрована
Типы данных: String
По умолчанию: нет
:marker Результат начнётся с маркера в алфавитном порядке. Если он не установлен, он начнётся с первого
Типы данных: String
По умолчанию: нет
:maxKeys Установите максимальное количество результатов. Если оно не установлено, будет установлено значение 100. Максимальное значение maxKeys равно 1000.
Типы данных: String
По умолчанию: 100

Чтобы узнать больше о методах запросов Fog::Aliyun, вы можете обратиться к нашему исходному коду. Чтобы узнать больше об API OSS, обратитесь к AliYun OSS API.

Уровень модели

Модели Fog ведут себя аналогично ActiveModel. Модели обычно реагируют на методы create, save, destroy, reload и attributes. Кроме того, туман автоматически создаст средства доступа к атрибутам.

Вот краткое изложение общих методов модели:

Method Описание
create Принимает хэш атрибутов и создаёт объект.
Примечание: создание — это неблокирующий вызов, и вам потребуется дождаться действительного состояния, прежде чем использовать полученный объект. **Сохранить** — сохраняет объект.

Примечание: не все объекты поддерживают обновление объекта.

Уничтожить — уничтожает объект.

Примечание: это неблокирующий вызов, и удаление объекта может произойти не мгновенно.

Обновить — обновляет объект с последним состоянием из сервиса.

Атрибуты — возвращает хеш, содержащий список атрибутов модели и значений.

Идентичность — возвращает идентичность объекта.

Примечание: она не всегда может быть равна object.id.

В оставшейся части этого документа подробно описывается абстракция модели.

Примечание. Fog иногда относится к контейнерам OSS как к каталогам.

Список каталогов

Чтобы получить список каталогов:

dirs = conn.directories

Это возвращает коллекцию моделей Fog::Storage::Aliyun::Directory:

Получить каталог

Чтобы получить конкретный каталог:

dir = dirs.get "dir"

Возвращает экземпляр Fog::Storage::Aliyun::Directory.

Создать каталог

Для создания каталога:

dirs.create :key => 'backups'

Удалить каталог

Чтобы удалить каталог:

directory.destroy

Примечание: каталог должен быть пустым перед удалением.

URL каталога

Получить URL каталога:

directory.public_url

Перечислить файлы

Перечислить файлы в каталоге:

directory.files

Примечание: содержимое файла не загружается до вызова атрибута body.

Загрузить файлы

Загрузить файл в каталог:

file = directory.files.create :key => 'space.jpg', :body => File.open "space.jpg"

Примечание: для файлов размером более 5 ГБ обратитесь к разделу «Загрузка больших файлов».

Загрузка больших файлов

OSS требует, чтобы файлы размером более 5 ГБ (предельный размер по умолчанию для OSS) загружались в сегменты вместе с сопровождающим файлом манифеста. Все сегменты должны быть загружены в один и тот же контейнер.

Сегментированные файлы загружаются как обычные файлы. Подробнее см. раздел «Скачать файлы».

Скачать файлы

Наиболее эффективный способ загрузки файлов из частного или общедоступного каталога выглядит следующим образом:

File.open('downloaded-file.jpg', 'w') do | f |
  directory.files.get("my_big_file.jpg") do | data, remaining, content_length |
    f.syswrite data
  end
end

Этот код скачает и сохранит файл.

Примечание: атрибут body файла будет пустым, если файл был загружен с помощью этого метода.

Если объект файла уже загружен в память, вы можете сохранить его следующим образом:

File.open('germany.jpg', 'w') {|f| f.write(file_object.body) }

Примечание: этот метод более ресурсоёмкий, так как весь объект загружается в память перед сохранением файла, как в приведённом выше примере.

URL файла

Получить URL файла:

file.public_url

Скопировать файл

Cloud Files поддерживает копирование файлов. Чтобы скопировать файлы в контейнер с именем «trip» с именем «europe.jpg», выполните следующие действия:

file.copy("trip", "europe.jpg")

Чтобы переместить или переименовать файл, выполните операцию копирования, а затем удалите старый файл:

file.copy("trip", "germany.jpg")
file.destroy

Удалить файл

Удалить файл:

file.destroy

Разработка

После проверки репозитория запустите bin/setup, чтобы установить зависимости. Затем запустите rake spec, чтобы запустить тесты. Вы также можете запустить bin/console для интерактивной подсказки, которая позволит вам экспериментировать.

Чтобы установить этот гем на локальную машину, запустите bundle exec rake install. Чтобы выпустить новую версию, обновите номер версии в version.rb, а затем запустите bundle exec rake release, который создаст тег git для версии, отправит коммиты и теги git, а также отправит файл .gem на rubygems.org.

Лицензия

Гем доступен как открытый исходный код в соответствии с условиями MIT License.

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Описание недоступно Развернуть Свернуть
MIT
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/dengqinsi-fog-aliyun.git
git@api.gitlife.ru:oschina-mirror/dengqinsi-fog-aliyun.git
oschina-mirror
dengqinsi-fog-aliyun
dengqinsi-fog-aliyun
master