ruby-on-rails - 使用 AWS 的 Heroku 上的 TypeError(没有将数组隐式转换为字符串)Rails App
问题描述
我正在关注 Michael Hart 的Ruby on Rails 教程并停留在第 13 章。我无法在部署在 Heroku 上的 Rails 应用程序上发布图像,但图像在开发服务器上工作得很好。我的carrier_wave.rb 最初看起来像
if Rails.env.production?
CarrierWave.configure do |config|
config.fog_credentials = {
# Configuration for Amazon S3
:provider => 'AWS',
:aws_access_key_id => ENV['S3_ACCESS_KEY'],
:aws_secret_access_key => ENV['S3_SECRET_KEY'],
:region => ENV['S3_REGION']
}
config.fog_directory = ENV['S3_BUCKET']
end
end
当我的carrier_wave.rb 看起来像这样时,我收到了一个看起来像这样的错误
:reason_phrase => "Forbidden"
在 SO 上搜索后,我找到了这篇文章,并将我的 carrier_wave.rb 更改为如下所示
CarrierWave.configure do |config|
config.root = Rails.root.join('tmp') # adding these...
config.cache_dir = 'carrierwave' # ...two lines
config.fog_credentials = {
:provider => 'AWS', # required
:s3_access_key_id => ENV['S3_ACCESS_KEY'], # required
:s3_secret_access_key => ENV['S3_SECRET_KEY'], # required
:region => 'us-east-2', # optional, defaults to 'us-east-1'
:host => 's3.example.com', # optional, defaults to nil
:endpoint => 'https://s3.example.com:8080' # optional, defaults to nil
}
config.fog_directory = ENV['S3_Bucket'] # required
config.fog_public = false # optional, defaults to true
config.fog_attributes = {'Cache-Control'=>'max-age=315576000'} # optional, defaults to {}
end
现在我收到错误
TypeError (no implicit conversion of Array into String)
我不知道这是否比原来的carrier_wave.rb更接近工作
我的 IAM 用户拥有“AmazonS3FullAccess”作为权限。我什至尝试将 S3 存储桶设置为公共访问,但没有成功。任何帮助或建议将不胜感激。
解决方案
推荐阅读
- javascript - 使用模板文字转换表达式
- symfony - 如何将 Dockerized Symfony 应用程序部署到 Digital Ocean
- visual-studio-code - 如何删除除 Markdown 之外的所有文件中的尾随空格?
- c - 使用 clang 编译具有 readline 支持的 C 程序
- c# - Environment.GetFolderPath() 不支持哪些平台?
- macos - 在没有 Brew 的 Mac OS X Lion 上安装 OpenMP
- parsing - Ocaml 运行时解析器生成器
- angular - 输入上的 Angular Material 占位符不流动
- gcc - 使输出不连贯的错误消息
- python - 分组和聚合列,但如果值不匹配则创建 NaN