Ошибка загрузки изображения Rails Shrine на Google диск

Я пытаюсь загрузить изображения на Google Диск с помощью Shrine. Я выполнил инструкции из этого драгоценного камня https://github.com/verynear/shrine-google_drive_storage

Я добавил эти жемчужины в свой проект

gem 'shrine'
gem 'shrine-google_drive_storage'

Это мой конфиг / shrine.rb

require "shrine"
require "shrine/storage/google_drive_storage"

Shrine.storages = {
  cache: Shrine::Storage::GoogleDriveStorage.new(prefix: "cache"),
  store: Shrine::Storage::GoogleDriveStorage.new(prefix: "store"),
}

Shrine::Storage::GoogleDriveStorage.new(
  prefix: "store",
  google_drive_client_secret_path: "#{Rails.root}/config/client_secret.json",
  drive_public_folder_id: '0Bz_kkknizZmZRXZzeXdua1FNUXc',
  google_drive_options: {
        path: proc { |style| "#{id}_#{photo.original_filename}_#{style}" },
      },
)

но когда я пытаюсь загрузить изображение, я получаю это сообщение об ошибке

NameError (undefined local variable or method `content_type' for #<Shrine::Storage::GoogleDriveStorage:0x00000004009868>):

Кто-нибудь знает, где я ошибся?


person Mišel Ademi    schedule 03.11.2017    source источник
comment
Вы не делаете ничего плохого, кроме того, что уже указал Васиф. Кажется, что shrine-google_cloud_storage на самом деле не был протестирован должным образом, вам следует открыть тикет в репозитории: github. ru / verynear / shrine-google_drive_storage   -  person janko-m    schedule 09.11.2017


Ответы (1)


Вы должны инициализировать Shrine::Storage::GoogleDriveStorage со всеми необходимыми параметрами и назначить соответствующие хранилища Shrine (cache и store) следующим образом:

Shrine.storages = {
  cache: Shrine::Storage::GoogleDriveStorage.new(
    prefix: "cache",
    google_drive_client_secret_path: "#{Rails.root}/config/client_secret.json",
    drive_public_folder_id: '0Bz_kkknizZmZRXZzeXdua1FNUXc',
    google_drive_options: {
      path: proc { |style| "#{id}_#{photo.original_filename}_#{style}" }
    }
  ),
  store: Shrine::Storage::GoogleDriveStorage.new(
    prefix: "store",
    google_drive_client_secret_path: "#{Rails.root}/config/client_secret.json",
    drive_public_folder_id: '0Bz_kkknizZmZRXZzeXdua1FNUXc',
    google_drive_options: {
      path: proc { |style| "#{id}_#{photo.original_filename}_#{style}" }
    }
  )
}

После этого вам нужно создать класс загрузчика, скажем, ImageUploader, и ввести атрибут вложения в вашу модель. Для получения подробных инструкций выполните действия, указанные в разделе быстрого запуска janko-m / shrine. адаптироваться к вашим потребностям.

person Wasif Hossain    schedule 03.11.2017