缺少必需的选项:名称

时间:2018-06-18 15:25:08

标签: ruby-on-rails amazon-s3 carrierwave

我正在尝试设置AWS和carrierwave从我的网站上传图片。当我尝试上传/更新帖子时,我不断收到错误'缺少必需的选项:名称'。我已经按照教程设置我的S3帐户并设置了carrierwave.rb。如果您有任何想法,请告诉我们!

carrierwave.rb

CarrierWave.configure do |config|
 config.storage    = :aws
 config.aws_bucket = ENV['S3_BUCKET_NAME']
 config.aws_acl    = 'public-read'
 config.aws_authenticated_url_expiration = 60 * 60 * 24 * 7
 config.aws_attributes = {
   expires: 1.week.from_now.httpdate,
   cache_control: 'max-age=604800'
 }

 config.aws_credentials = {
   access_key_id:     ENV['AWS_ACCESS_KEY_ID'],
   secret_access_key: ENV['AWS_SECRET_ACCESS_KEY'],
   region:            ENV['AWS_REGION']
 }
end

.env示例

S3_BUCKET_NAME=*****
AWS_ACCESS_KEY_ID=*****
AWS_SECRET_ACCESS_KEY=*****
AWS_REGION=*****

portfolio_uploader.rb

class PortfolioUploader < CarrierWave::Uploader::Base

  storage :aws

  def store_dir
    "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
  end

  def extension_white_list
    %w(jpg jpeg gif png)
  end
end

3 个答案:

答案 0 :(得分:1)

我遇到了一个相同的问题,请尝试重新启动Rails服务器,在对配置文件夹进行任何更改时,您都必须重新启动服务器。

答案 1 :(得分:0)

我也遇到了这个问题。错误消息是欺骗性的。我发现实际上是引起问题的config.aws_bucket = ENV['S3_BUCKET_NAME']行。如果config.aws_bucketnil(例如未设置ENV['S3_BUCKET_NAME']的话,您将在控制台中得到欺骗性的missing required option :name

答案 2 :(得分:0)

由于某种原因,我看到Carrierwave.rb文件已从我的应用程序的配置>>初始化文件夹中删除。重新创建相同解决了该问题。希望对别人有帮助。