缺少必需的参数:aws_access_key_id,aws_secret_access_key(ArgumentError)bin / rake assets:预编译RAILS_ENV =生产

时间:2018-06-07 07:44:36

标签: ruby-on-rails ruby carrierwave

当我跑步时:

$ bin/rake assets:precompile RAILS_ENV=production

我收到此错误:

gems/fog-core-2.1.0/lib/fog/core/service.rb:244:in `validate_options': Missing required arguments: aws_access_key_id, aws_secret_access_key (ArgumentError)

这是我的config/initializers/carrierwave.rb

CarrierWave.configure do |config|
  config.fog_provider = 'fog/aws'
  config.fog_credentials = {
  provider:              'AWS',
  aws_access_key_id:     ENV['ACCESS_KEY_ID'],
  aws_secret_access_key: ENV['AWS_KEY'],
  region:                'ca-central-1'
  }
  config.fog_directory  = ENV['AWS_STORAGE']
  config.fog_public     = false
  config.fog_attributes = { cache_control: "public, max-age=# 
  {365.days.to_i}" }
end

我正在使用:

gem 'dotenv-rails', groups: [:development, :test]

管理我的环境变量。

请帮忙。

1 个答案:

答案 0 :(得分:0)

根据共享的规范,dot-env似乎只适用于开发和测试环境,但不适用于生产。

其次,您需要设置环境变量ACCESS_KEY_ID和AWS_KEY,以便它们在Rails中可用。

您可以在终端中执行此操作:

export ACCESS_KEY_ID=<your access key id>
export AWS_KEY=<your secret key>

将它们添加到.bashrc或.bash_profile中,以便它们在下次启动新shell时使用,或者使用dotenv这样的内容使它们特定于您的项目。

另一种方法是在secrets.yml或.env文件中设置它们的值