【问题标题】:Carrierwave config with fog/aws带有雾/aws 的载波配置
【发布时间】:2016-02-05 22:36:41
【问题描述】:

使用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

【问题讨论】:

    标签: ruby-on-rails carrierwave


    【解决方案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
    

    在您的上传器中,将存储设置为 :fog

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

    【讨论】:

    • 我在上面分享了我的初始化程序,它看起来一样。我错过了什么?
    • 我认为您需要删除 config.fog_provider = 'fog/aws' 行。
    • 如果您的 gem 版本为 v0.10.0,请参考此链接 github.com/carrierwaveuploader/carrierwave/tree/v0.10.0
    • 我更新了我的代码,请检查这是否适合你。
    • 可以跳过可选参数。
    【解决方案2】:

    CarrierWave::Uploader::Base:Class#fog_provider= 尚未发布。它仅在 CarrierWave master 分支上可用。

    解决方案 1(使用母版):
    将您的 Gemfile 条目更改为

    gem "carrierwave", git: "git@github.com:carrierwaveuploader/carrierwave.git"
    

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


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

    0.10 中,您使用fog_credentials= 设置:provider

    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 的文档。

    【讨论】:

    • 我的配置看起来和你上面的一样。我正在设置提供者密钥。我同意,我宁愿不使用 master。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-14
    • 2012-03-16
    • 1970-01-01
    • 2012-08-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多