带雾/ aws的Carrierwave配置

时间:2016-02-04 12:56:59

标签: ruby-on-rails carrierwave

在使用fog / aws gem和carrierwave wiki中的说明时,我的应用程序似乎在启动时抛出错误。

我只是想上传到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

2 个答案:

答案 0 :(得分:1)

试试这个.................

您的 initializers / 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

答案 1 :(得分:0)

target尚未发布。它仅适用于CarrierWave CarrierWave::Uploader::Base:Class#fog_provider=分支。

解决方案1(使用主人):
将您的master条目更改为

Gemfile

但不建议这样做,因为它不如发布版本稳定。

解决方案2(检查0.10文档):

gem "carrierwave", git: "git@github.com:carrierwaveuploader/carrierwave.git" 中,您使用0.10

设置:provider
fog_credentials=

查看v0.10 here的文档。