set rails fog gem application.yml keys for development environment

set rails fog gem application.yml keys for development environment

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

但在开发中,应该使用 aplication.yml 文件中的环境(添加到 .gitignore)。它没有使用这个文件,因为在开发中 application.yml 中的 ENV[] 不存在。

为此我遵循了几个教程,在所有教程中我都明白应该使用 applicaction.yml 中介绍的 ENV[]。我错了吗?我错过了什么吗?我还需要其他东西吗?我读到我可以通过手动输入 export 来引入 ENV[],但我需要知道是否不够将它们写在 application.yml

#config/application.yml    
MAPS_API_KEY: 1234googlemapapikey56788

SECRET_KEY_BASE: ab1234567longkeyy2979127401411124
AWS_ACCES_KEY_ID: ACCESSKEYID1234567
AWS_SECRET_ACCESS_KEY: SECRETKEY123456788/jaa345
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:in `fetch': key not found: "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'

您上面列出的 config/application.yml 有错字。

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

我想这应该能让你再次工作。