我正在尝试设置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
答案 0 :(得分:1)
我遇到了一个相同的问题,请尝试重新启动Rails服务器,在对配置文件夹进行任何更改时,您都必须重新启动服务器。
答案 1 :(得分:0)
我也遇到了这个问题。错误消息是欺骗性的。我发现实际上是引起问题的config.aws_bucket = ENV['S3_BUCKET_NAME']
行。如果config.aws_bucket
为nil
(例如未设置ENV['S3_BUCKET_NAME']
的话,您将在控制台中得到欺骗性的missing required option :name
。
答案 2 :(得分:0)
由于某种原因,我看到Carrierwave.rb文件已从我的应用程序的配置>>初始化文件夹中删除。重新创建相同解决了该问题。希望对别人有帮助。