TypeError (без неявного преобразования массива в строковое) Rails App на Heroku с использованием AWS - PullRequest
0 голосов
/ 27 ноября 2018

Я следую учебному пособию Майкла Харта по Ruby on Rails и застрял в главе 13. Я не могу опубликовать изображения в своем приложении Rails, развернутом в Heroku, но изображения отлично работают на сервере разработки.Мой 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 Bucket в открытый доступ, но безуспешно.Любая помощь или совет будут оценены.

...