使用载波和S3时无法在heroku中部署

时间:2016-02-10 01:47:21

标签: ruby-on-rails heroku amazon-s3

我是铁杆的新手。

现在使用ruby和rails教程。在本节中,我们使用载波和AWS S3进行照片存储。

当我在heroku中部署时,会出现这样的错误:

" ArgumentError:缺少必需的参数:aws_access_key_id,aws_secret_access_key"

我在carrir_wave.rb上写下如下:

if Rails.env.production?
  CarrierWave.configure do |config|
    config.fog_credentials = {
      # Configuration for Amazon S3
      :provider              => 'AWS',
      :aws_access_key_id     => ENV['******************'],
      :aws_secret_access_key => ENV['*************************']
      }
    config.fog_directory     =  ENV['*******************']
  end
end

当我在终端上运行测试时,所有测试都很好。

我一直在heroku上设置凭证:

$ heroku config:set S3_ACCESS_KEY=<access key>
$ heroku config:set S3_SECRET_KEY=<secret key>
$ heroku config:set S3_BUCKET=<bucket name>

我非常感谢任何人的帮助。

1 个答案:

答案 0 :(得分:0)

在config / initializers文件夹中创建一些carrierwave.rb filr,并将以下代码段放在carrierwave.rb文件中

CarrierWave.configure do |config|
  config.fog_credentials = {
    provider:              'AWS',                          # required
    aws_access_key_id:     ENV['AWS_ACCESS_KEY_ID'],       # required
    aws_secret_access_key: ENV['AWS_SECRET_ACCESS_KEY']    # required
  }
  config.fog_directory  =  ENV['S3_BUCKET_NAME']                # required
end

并将以下键的值放在项目文件夹中的某个.env文件中 1)AWS_ACCESS_KEY_ID 2)AWS_SECRET_ACCESS_KEY 3)S3_BUCKET_NAME

然后从终端

重新运行您的服务器