所以,我的paperclip.rb文件中有以下代码:
# Paperclip config
config.paperclip_defaults = {
:storage => :s3,
:s3_credentials => {
:bucket => ENV['S3_BUCKET_NAME'],
:access_key_id => ENV['AWS_ACCESS_KEY_ID'],
:secret_access_key => ENV['AWS_SECRET_ACCESS_KEY'],
:region => 'oregon'
}
}
正如您所看到的,我正在使用ENV变量来保护密钥。我还使用application.yml文件来实际存储密钥,如下所示:
S3_BUCKET_NAME: "*bucketname"
AWS_ACCESS_KEY_ID: "*keys here*"
AWS_SECRET_ACCESS_KEY: "*keys here*"
出于某种原因,当我运行涉及回形针和S3的迁移时,键没有被转移到Paperclip ENV变量,并且我得到了一个缺失的键错误。
我做错了什么?
谢谢!
编辑错误:
AWS::S3::Errors::InvalidAccessKeyId: The AWS Access Key Id you provided does not exist in our records.
/usr/local/rvm/gems/ruby-2.1.1/gems/aws-sdk-1.39.0/lib/aws/core/client.rb:374:in `return_or_raise'
/usr/local/rvm/gems/ruby-2.1.1/gems/aws-sdk-1.39.0/lib/aws/core/client.rb:475:in `client_request'
答案 0 :(得分:3)
在Heroku
上,您必须通过运行以下命令来设置每个环境变量:
$ heroku config:set key ="value"
例如:
$ heroku config:set S3_BUCKET_NAME ="your_bucket_name"
当您使用figaro gem
时,您将获得一个现成的figaro
命令,您可以使用该命令一次性设置配置文件application.yml
中的值:
$ figaro heroku:set -e production
要验证设置变量,请使用以下命令列出所有设置的环境变量:
$ heroku config
有关详细信息,请参阅Heroku: Configuration and Config Vars和Figaro on Heroku。
<强>更新强>
在开发环境中,
确保您运行rails generate figaro:install
命令,该命令会创建config/application.yml
文件,并将其添加到您的.gitignore
文件中。
在application.yml
中添加配置:
S3_BUCKET_NAME: "your_bucket_name"
AWS_ACCESS_KEY_ID: "your_access_key_id"
AWS_SECRET_ACCESS_KEY: "your_secret_access_key"
确保config.paperclip_defaults
中的密钥名称与application.yml
中指定的密钥完全匹配
重启服务器后,加载配置。