Ste*_*son 6 ruby-on-rails amazon-s3 carrierwave
我正在尝试设置 AWS 和carrierwave 从我的网站上传图片。但是,当我尝试上传/更新帖子时,我不断收到错误消息“缺少必需的选项:名称”。我按照教程设置了我的 S3 帐户并设置了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
Run Code Online (Sandbox Code Playgroud)
.env 示例
S3_BUCKET_NAME=*****
AWS_ACCESS_KEY_ID=*****
AWS_SECRET_ACCESS_KEY=*****
AWS_REGION=*****
Run Code Online (Sandbox Code Playgroud)
投资组合_上传者.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
Run Code Online (Sandbox Code Playgroud)
Pre*_*ays 14
我也遇到了这个问题。该错误消息具有欺骗性。我发现这实际上是config.aws_bucket = ENV['S3_BUCKET_NAME']导致问题的线路。如果config.aws_bucket是nil(例如当未设置时,您将在控制台中ENV['S3_BUCKET_NAME']得到欺骗性的信息。missing required option :name