我遵循了这个教程:
http://lifesforlearning.com/uploading-images-with-carrierwave-to-s3-on-rails/
我有工作的载波上传器,它将文件存储到磁盘空间
我一步一步做了什么:
1)添加fog
gem并运行bundle install
和bundle update
2)在config / initializers中我创建了r3.rb文件:
CarrierWave.configure do |config|
config.fog_credentials = {
:provider => 'AWS',
:aws_access_key_id => 'mykey',
:aws_secret_access_key => 'mysecretkey',
:region => 'us-west-2' # Change this for different AWS region.
}
config.fog_directory = "bucket-main"
end
我跑了轨道并尝试保存一些照片。但正如你在图片上看到的那样,我的存储桶是空的。所以它们必须存储在我的磁盘上。 现在我该怎么做?
更新我将存储更改为雾。
这是我的photouploader类代码:
# encoding: utf-8
class PhotoUploader < CarrierWave::Uploader::Base
storage :fog
def store_dir
"uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}"
end
现在我收到了这个错误:
主机名“bucket-main.bucket-main.s3-us-west-1.amazonaws.com”没有 匹配服务器证书(OpenSSL :: SSL :: SSLError)
答案 0 :(得分:1)
我最终通过更新解决了我的问题
bundle update fog
和
bundle update carrierwave
答案 1 :(得分:0)
尝试将path_style
添加到您的配置和fog_directory
config.fog_credentials = {
...
:path_style => true
}
config.fog_directory = 'bucket-main'
答案 2 :(得分:0)
我只花了几个小时来追踪这个错误的原因,我也得到了:
hostname&#34; bucket-main.bucket-main.s3-us-west-1.amazonaws.com&#34;与服务器证书(OpenSSL :: SSL :: SSLError)
不匹配
奇怪的是如何在主机名中重复两次存储桶名称。事实证明我配置了错误的区域名称。请注意您的config.fog_credentials
:region => 'us-west-2'
...但例外中的主机名有s3-us-west-1
?如果您的存储桶位于一个AWS区域中,但您在Fog凭据中配置了不同的区域,则Fog将尝试遵循AWS的重定向,并且在这种情况下,存储桶名称会以某种方式加倍。 Fog会发出关于重定向的警告,但Carrierwave最终会将此隐藏起来。
将您的Fog凭据中的:region
设置为存储桶实际位于AWS中的位置,does not match the server certificate
例外将停止发生。