How does ariyun use figaro?

  question, ruby

I am new to Ruby on Rails. I have already deployed the project to Aliyun. The pictures of the website are stored by aws s3. In the process, I need to set some secret keys of AWS. I used figaro. My setup is like this:

config/application.yml:

production:
 SEND_CLOUD_USER_NAME: xxx
 SEND_CLOUD_USER_KEY: xxxxx
 secret_key_base: xxxxxxx
 AWS_ACCESS_KEY_ID: xxxxxxxx
 AWS_SECRET_ACCESS_KEY: hIMMHPxxxxxxx
 AWS_REGION: ap-northeast-1
 AWS_BUCKET_NAME: xxxxx
 development:
 SEND_CLOUD_USER_NAME: xxx
 SEND_CLOUD_USER_KEY: xxxxx
 secret_key_base: xxxxxxx
 AWS_ACCESS_KEY_ID: xxxxxxxx
 AWS_SECRET_ACCESS_KEY: hIMMHPxxxxxxx
 AWS_REGION: ap-northeast-1
 AWS_BUCKET_NAME: xxxxx

config/initializers/carrierwave.rb:

CarrierWave.configure do |config|
 if Rails.env.production?
 config.fog_provider = 'fog'
 config.fog_credentials = {
 provider:              'AWS',
 aws_access_key_id:     ENV["AWS_ACCESS_KEY_ID"],
 
 aws_secret_access_key: ENV["AWS_SECRET_ACCESS_KEY"],
 
 region:                ENV["AWS_REGION"]
 
 }
 config.fog_directory  = ENV["AWS_BUCKET_NAME"]
 
 
 else
 config.storage :file
 end
 end

uploaders/house_image_uploader.rb:

if Rails.env.development?
 storage :file
 elsif Rails.env.production
 storage :fog
 end

Then executecap production deploy
An error will be reported and the error prompt is:

00:22 deploy:assets:precompile
 01 bundle exec rake assets:precompile
 01 rake aborted!
 01 ArgumentError: Missing required arguments: aws_access_key_id, aws_secret_access_key
 01 /home/deploy/homey/shared/bundle/ruby/2.4.0/gems/fog-core-1.45.0/lib/fog/core/service.rb:244:in `validate…
 01 /home/deploy/homey/shared/bundle/ruby/2.4.0/gems/fog-core-1.45.0/lib/fog/core/service.rb:268:in `handle_s…
 01 /home/deploy/homey/shared/bundle/ruby/2.4.0/gems/fog-core-1.45.0/lib/fog/core/service.rb:98:in `new'
 01 /home/deploy/homey/shared/bundle/ruby/2.4.0/gems/fog-core-1.45.0/lib/fog/core/services_mixin.rb:16:in `ne…
 01 /home/deploy/homey/shared/bundle/ruby/2.4.0/gems/fog-core-1.45.0/lib/fog/storage.rb:27:in `new'
 ...
 ...

It is suggested that AWS _ ACCESS _ KEY _ ID and AWS _ SECRET _ ACCESS _ KEY are missing. I can see from figaro github that one statement is:

Other Hosts
 If you're not deploying to Heroku, you have two options:
 
 Generate a remote configuration file
 Set ENV variables directly
 Generating a remote configuration file is preferred because of:
 
 familiarity – Management of config/application.yml is like that of config/database.yml.
 isolation – Multiple applications on the same server will not produce configuration key collisions.

So I logged in to the remote host and created it under /appname/shared/config and /appname/current/configapplication.ymlAnd add content:

production:
 SEND_CLOUD_USER_NAME: xxx
 SEND_CLOUD_USER_KEY: xxxxx
 secret_key_base: xxxxxxx
 AWS_ACCESS_KEY_ID: xxxxxxxx
 AWS_SECRET_ACCESS_KEY: hIMMHPxxxxxxx
 AWS_REGION: ap-northeast-1
 AWS_BUCKET_NAME: xxxxx
 development:
 SEND_CLOUD_USER_NAME: xxx
 SEND_CLOUD_USER_KEY: xxxxx
 secret_key_base: xxxxxxx
 AWS_ACCESS_KEY_ID: xxxxxxxx
 AWS_SECRET_ACCESS_KEY: hIMMHPxxxxxxx
 AWS_REGION: ap-northeast-1
 AWS_BUCKET_NAME: xxxxx

This is still wrong, orArgumentError: Missing required arguments: aws_access_key_id, aws_secret_access_keyI have searched in Stack Overflow and tried some methods, but the problem remains the same. Who can help me and how to solve this problem? Thank you!

Solve it by yourself, when looking for relevant information, I saw:
And finally if we deploy application with Capistrano we have to deploy it properly. We should put local_env.yml to the Capistrano shared folder on the server and change config/deploy.rb like this:

before 'deploy:assets:precompile', :symlink_config_files
 
 desc "Link shared files"
 task :symlink_config_files do
 symlinks = {
 "#{shared_path}/config/database.yml" => "#{release_path}/config/database.yml",
 "#{shared_path}/config/local_env.yml" => "#{release_path}/config/local_env.yml"
 }
 run symlinks.map{|from, to| "ln -nfs #{from} #{to}"}.join(" && ")
 end

So I found it in my rails applicationconfig/deploy.rb, there is a line is:

append :linked_files, "config/database.yml", "config/secrets.yml"

So I tried to add application.yml to the back and tried to deploy successfully again.