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