使用carrierwave和fog将文件上传到S3时缺少要求

我收到此错误Missing required arguments: aws_access_key_id, aws_secret_access_key 。 这看起来很奇怪,因为我已经在initializers文件夹中添加了carrierwave.rb。 当我使用aws-sdk时,访问/密钥可以正常工作

 CarrierWave.configure do |config| config.fog_credentials = { provider: "AWS", aws_access_key_id: ENV["PUB-KEY"], aws_secret_access_key: ENV["SEC-KEY"] } config.fog_directory = ENV["mybucket"] end 

这是我工作的样子:

 CarrierWave.configure do |config| config.fog_credentials = { :provider => 'AWS', :aws_access_key_id => ENV['S3_KEY'], :aws_secret_access_key => ENV['S3_SECRET'], :region => 'us-east-1' } config.fog_directory = ENV['S3_BUCKET'] end 

为了生产,我添加了键S3_KEYS3_SECRETS3_BUCKET 。 对于开发和测试,我使用了.gitignore文件中的初始化程序:

 # .gitignore /config/initializers/app_environment_variables.rb 

并在初始化程序中

 # config/initializers/app_environment_variables.rb ENV['S3_KEY'] = "********************" ENV['S3_SECRET'] = "**************************..." ENV['S3_BUCKET'] = "**********-dev" 

生产和开发配置是不同的。 您还需要将AWS密钥置于开发阶段。

我刚从中复制了AWS密钥

 config/environments/production.rb 

 config/environments/development.rb 

一切都很好。