Paperclip 回形针和卡皮斯特拉诺的问题

Paperclip 回形针和卡皮斯特拉诺的问题,paperclip,capistrano3,figaro-ruby,Paperclip,Capistrano3,Figaro Ruby,我已经在Ubuntu 16.04服务器上部署了Rails 5应用程序。但是,回形针配置存在问题 我正在使用Figaro gem来存储我的环境变量。我的回形针配置如下所示: config/environments/production.rb config.paperclip_defaults = { storage: :s3, bucket: 'anthonycandaele', s3_region: 'eu-west-1', s3_credentials: { acce

我已经在Ubuntu 16.04服务器上部署了Rails 5应用程序。但是,回形针配置存在问题

我正在使用Figaro gem来存储我的环境变量。我的回形针配置如下所示:

config/environments/production.rb

config.paperclip_defaults = {
  storage: :s3,
  bucket: 'anthonycandaele',
  s3_region: 'eu-west-1',
  s3_credentials: {
    access_key_id: ENV.fetch("AWS_ACCESS_KEY_ID"),
    secret_access_key: ENV.fetch("AWS_SECRET_ACCESS_KEY"),
    s3_host_name: "s3-eu-west-1.amazonaws.com",
  }
}

这在开发中效果很好

但是,当我尝试部署我的应用程序时,当我尝试使用Capistrano部署时,我会失败:

log/capistrano.log

INFO [3b1c6af3] Running bundle exec rake assets:precompile as   deploy@146.185.164.246
3245  DEBUG [3b1c6af3] Command: cd   /opt/www/personalsite/releases/20170119174557 && ( export    RAILS_ENV="production" ; bundle exec rake assets:precompile )
3246  DEBUG [3b1c6af3] »·rake aborted!
3247  DEBUG [3b1c6af3] »·KeyError: key not found: "AWS_ACCESS_KEY_ID"
因此,我尝试通过调整回形针配置来解决问题:

config.paperclip_defaults = {
storage: :s3,
bucket: 'anthonycandaele',
s3_region: 'eu-west-1',
s3_credentials: {
  access_key_id: ENV["AWS_ACCESS_KEY_ID"],
  secret_access_key: ENV["AWS_SECRET_ACCESS_KEY"],
  s3_host_name: "s3-eu-west-1.amazonaws.com",
}
}

现在我可以使用Capistrano进行部署,但当我尝试使用该应用程序上载文件时,我发现AWS出现了MissingCredentials错误:

Aws::Errors::MissingCredentialsError (unable to sign request without credentials set):
有没有人有使用回形针和使用Figaro存储环境变量的经验

谢谢你的帮助


Anthony

我可以通过设置远程配置/application.yml文件来解决这个问题

我的猜测是,在部署时,这些秘密实际上并没有在环境中设置。你能试着把ENV[“AWS\u SECRET\u ACCESS\u KEY”]添加到你的production.rb中,看看有没有什么东西被丢弃了吗?你说得对,我把AWS\u SECRET\u ACCESS\u KEY放在开发服务器上,我得到了值。但当我将AWS_SECRET_ACCESS_密钥放在生产服务器上时,我没有得到任何回报。我怎样才能解决这个问题?