首页 > 解决方案 > 凭证文件未在 Amazon Linux 上读取 Rails 6.1

问题描述

我最近将我的Rails6.0应用程序升级到Rails6.1并且我没有使用称为凭据的 Rails 功能。所以我决定让它工作。

我的应用程序有 3 个环境:

  1. 发展
  2. 分期
  3. 生产

要使用凭据功能,我使用以下命令:

对于开发:EDITOR="vscode --wait" rails credentials:edit --environment development

对于分期:EDITOR="code --wait" rails credentials:edit --environment staging

对于生产:EDITOR="code --wait" rails credentials:edit --environment production

这是 yml 的示例

aws:
  s3_access_key: XXXXXXXXX
  s3_secret: xxxxxxxx
  s3_bucket_name: xxxxxx

这是我的config/environments/staging.rb

config.paperclip_defaults = {
  storage: :s3,
  s3_protocol: :https,
  preserve_files: true,
  s3_region: 's3_region',
  url: ':s3_alias_url',
  s3_credentials: {
    bucket: Rails.application.credentials.aws[:s3_bucket_name],
    access_key_id: Rails.application.credentials.aws[:s3_access_key],
    secret_access_key: Rails.application.credentials.aws[:s3_secret]
  }
}

由于我的应用程序托管在 AWS ElasticBeanstalk 上,因此在我部署 Rails 应用程序时进行了所有更改后,部署失败并出现以下错误:

NoMethodError: undefined method `[]' for nil:NilClass
/var/app/ondeck/config/environments/staging.rb:51:in `block in <main>'

我的 lineNo#51 指向这个Rails.application.credentials.aws[:s3_bucket_name]

我也尝试过简单的方法 - 即不以嵌套方式应用/添加属性,但问题保持不变。

很明显,凭证文件没有加载。

请建议

标签: ruby-on-railsamazon-elastic-beanstalk

解决方案


您是否将主密钥(config/master.key)复制到服务器?默认情况下它在 .gitignore 中。您可以将此文件符号链接到服务器文件系统中的共享文件夹,以便于部署。


推荐阅读