为开发环境设置rails fog gem application.yml键

时间:2016-11-07 11:42:55

标签: amazon-s3 paperclip ruby-on-rails-5 fog figaro-ruby

我正在使用paperclip,fog,figaro gems将图像上传到amazon S3。在生产中工作正常,因为我手工介绍了heroku中的env变量。

但是在开发过程中,可以使用aplication.yml文件中的env(添加到.gitignore)。它没有使用这个文件,因为在开发中,application.yml中的ENV []不存在。

我遵循了几个教程,在所有这些教程中,我理解应该使用applicaction.yml中引入的ENV []。我错了吗?我错过了什么吗?我需要别的东西吗?我读到我可以通过手工输入导出ENV [],但我需要知道是否还不足以在application.yml上写下它们

#config/application.yml    
MAPS_API_KEY: 1234googlemapapikey56788

SECRET_KEY_BASE: ab1234567longkeyy2979127401411124
AWS_ACCES_KEY_ID: ACCESSKEYID1234567
AWS_SECRET_ACCESS_KEY: SECRETKEY123456788/jaa\12345
AWS_REGION: eu-west-1
S3_HOST_NAME: s3-eu-west-1.amazonaws.com

development:
  FOG_DIRECTORY: example-dev
  S3_BUCKET_NAME: example-dev
production:
  FOG_DIRECTORY: example-production
  S3_BUCKET_NAME: example-production

在开发和生产中我使用相同的代码:

#config/environments/development.rb && config/environments/production.rb
config.paperclip_defaults = {
storage: :s3,
s3_credentials: {
    bucket: ENV.fetch('S3_BUCKET_NAME'),
    access_key_id: ENV.fetch('AWS_ACCESS_KEY_ID'),
    secret_access_key: ENV.fetch('AWS_SECRET_ACCESS_KEY'),
    s3_region: ENV.fetch('AWS_REGION'),
  }
}

在生产工作正常,并在开发中我得到如下错误: development.rb:54:在`fetch'中:未找到密钥:“AWS_ACCESS_KEY_ID”(KeyError)

# config/initializers/paperclip.rb
Paperclip::Attachment.default_options[:url] = ':s3_domain_url'
Paperclip::Attachment.default_options[:path] = '/:class/:attachment/:id_partition/:style/:filename'

1 个答案:

答案 0 :(得分:0)

您在上面列出的config/application.yml有一个拼写错误。

您想要的密钥是AWS_ACCESS_KEY_ID,但复制的文件使用AWS_ACCES_KEY_ID(其中access缺少第二个s)。

我怀疑应该让你的事情再次发挥作用。