2016-02-04 2 views
2

Мое приложение, похоже, выдает ошибку при запуске при использовании жгута тумана/aws и инструкций в вики-носителе.Конфигурация Carrierwave с fog/aws

Я просто хочу загрузить на Amazon S3.

Ошибка броска является

undefined method `fog_provider=' for CarrierWave::Uploader::Base:Class 

Gemfile.rb

gem "fog" 
gem "fog-aws" 
gem "carrierwave" 

Инициализаторы/carrierwave.rb

CarrierWave.configure do |config| 
    config.permissions = 0666 
    config.directory_permissions = 0777 
    config.storage = :fog 
    config.fog_provider = 'fog/aws' 
    config.fog_credentials = { 
    provider:    'AWS', 
    aws_access_key_id:  'KEYID', 
    aws_secret_access_key: 'SECRETID', 
    region:    'us-east-1' 
    } 
    config.fog_directory = 'bucket-name' 
    config.fog_public  = false 
end 

ответ

0

CarrierWave::Uploader::Base:Class#fog_provider= еще не выпущен. Он доступен только на ветке CarrierWave master.

Решения 1 (Использовать мастер):
Изменить Gemfile записи в

gem "carrierwave", git: "[email protected]:carrierwaveuploader/carrierwave.git" 

Но это не рекомендуется, так как это не так стабильно, как версия.


Решение 2 (Проверьте 0.10 документации):

В 0.10 вы установите :provider с помощью fog_credentials=

CarrierWave.configure do |config| 
    config.fog_credentials = { 
    :provider    => 'AWS',      # required 
    :aws_access_key_id  => 'xxx',      # required 
    :aws_secret_access_key => 'yyy',      # required 
    :region     => 'eu-west-1',     # optional, defaults to 'us-east-1' 
    :host     => 's3.example.com',    # optional, defaults to nil 
    :endpoint    => 'https://s3.example.com:8080' # optional, defaults to nil 
    } 
    config.fog_directory = 'name_of_directory'      # required 
    config.fog_public  = false         # optional, defaults to true 
    config.fog_attributes = {'Cache-Control'=>'max-age=315576000'} # optional, defaults to {} 
end 

Просмотр документации для v0.10 here.

+0

Моя конфигурация выглядит так же, как ваша выше. Я устанавливаю ключ поставщика. Я согласен, я бы предпочел не использовать мастера. – anthonycollini

1

Попробуйте .................

Your инициализаторах/carrierwave.rb выглядеть следующим образом.

CarrierWave.configure do |config| 
    config.fog_credentials = { 
    :provider    => 'AWS',      # required 
    :aws_access_key_id  => 'xxx',      # required 
    :aws_secret_access_key => 'yyy',      # required 
    :region     => 'eu-west-1',     # optional, defaults to 'us-east-1' 
    :host     => 's3.example.com',    # optional, defaults to nil 
    :endpoint    => 'https://s3.example.com:8080' # optional, defaults to nil 
    } 
    config.fog_directory = 'name_of_directory'      # required 
    config.fog_public  = false         # optional, defaults to true 
    config.fog_attributes = {'Cache-Control'=>'max-age=315576000'} # optional, defaults to {} 
end 

В вашем пользователя, установите хранение в: туман

class AvatarUploader < CarrierWave::Uploader::Base 
    storage :fog 
end 
+0

Я поделился своим инициализатором выше, и он выглядит одинаково. Что мне не хватает? – anthonycollini

+0

Думаю, вам нужно удалить строку 'config.fog_provider = 'fog/aws''. –

+0

Если ваша версия gem v0.10.0, то ссылайтесь на эту ссылку https://github.com/carrierwaveuploader/carrierwave/tree/v0.10.0 –

Смежные вопросы