我正在尝试将应用程序推送到heroku,因此我需要将我的carrierwave设置转换为将图像存储到s3存储桶。我按照carrierwave readme上的指南进行操作,但无论我做什么,我似乎无法将图像保存到我的桶中。
首先我添加了雾宝石。
#carrierwave gemfile
gem "carrierwave"
gem "mini_magick"
gem "fog"
然后创建了一个amazon s3帐户,并使用管理员策略创建了一个IAM用户,并为该用户生成了一个访问密钥和密钥。然后我创建了一个存储桶并将受让人设置为每个人。
回到我的应用程序中,我将存储更改为image_uploader中的雾,并创建了一个具有以下值的初始化程序:
#config/initializers/fog.rb
CarrierWave.configure do |config|
config.fog_credentials = {
:provider => 'AWS',
:aws_access_key_id => 'myaccesskeyid',
:aws_secret_access_key => 'mysecretaccesskey',
:region => 'US Standard'
}
config.fog_directory = 'my-bucket'
end
重新启动服务器并尝试上传图片后,我会收到一张图像已损坏的图像,其中包含https://my-bucket.s3.amazonaws.com/uploads/image/url/56/inline_content_MOWEFbYOJKSLVM0LeTslBn1l7URjrwAn7w6qLd-kbbU.jpeg
这样的链接但该图片仍为空,图片尚未上传。我尝试创建不同的存储桶,使用我的旧根密钥为aws帐户,但似乎没有任何工作。我在欧洲使用美国地区,但这不应该有所作为。我似乎无法找到任何可以解释出现问题的错误,但除了我的服务器日志之外,我会在哪里查看?
编辑: 我尝试设置谷歌存储桶并更改了凭据,但它仍然提供了损坏的图像,并且没有任何内容上传到存储桶。
答案 0 :(得分:2)
我将我的雾版本降级到1.24.0,它开始工作了!
gem "fog", '1.24.0'