【发布时间】:2018-06-18 15:25:07
【问题描述】:
我正在尝试设置 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
【问题讨论】:
-
exact 错误是什么?您何时/何处看到此错误?
-
Completed 500 Internal Server Error in 102ms (ActiveRecord: 23.0ms) ArgumentError (missing required option :name) 是错误。当我尝试使用图像更新或创建投资组合项目时会发生这种情况。
-
尝试使用
ENV.fetch而不是ENV[] -
刚刚尝试 .fetch 仍然得到同样的错误
-
你也可以发布错误日志吗?
标签: ruby-on-rails amazon-s3 carrierwave