阿里云如何使用figaro?

发布于 2022-09-06 20:36:56 字数 3397 浏览 18 评论 0

我是Ruby on Rails新手,我已经把项目部署到阿里云,网站的图片用aws s3当存储,在这过程中需要设置AWS的一些秘钥,我用了figaro。我的设置是这样的:

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

然后执行cap production deploy
会报错,错误提示为:

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'
      ...
      ...

提示说缺少aws_access_key_id,aws_secret_access_key,我从figaro github上看到有一个说法就是:

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.

于是我登录远程主机,在/appname/shared/config下和/appname/current/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

这样仍然报错,还是ArgumentError: Missing required arguments: aws_access_key_id, aws_secret_access_key,在Stack Overflow搜索过,也试了一些方法,但问题照旧,谁能帮我一下,这个问题怎么解决?感谢!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

隔纱相望 2022-09-13 20:36:56

自己解决一下,在找相关资料的时候看到的:
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

于是我在自己的rails application中找到config/deploy.rb,里面有一行是:

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

于是我试着把application.yml加到后面去,再次尝试部署成功。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文