ruby-on-rails - 凭证文件未在 Amazon Linux 上读取 Rails 6.1
问题描述
我最近将我的Rails6.0
应用程序升级到Rails6.1
并且我没有使用称为凭据的 Rails 功能。所以我决定让它工作。
我的应用程序有 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]
我也尝试过简单的方法 - 即不以嵌套方式应用/添加属性,但问题保持不变。
很明显,凭证文件没有加载。
请建议
解决方案
您是否将主密钥(config/master.key)复制到服务器?默认情况下它在 .gitignore 中。您可以将此文件符号链接到服务器文件系统中的共享文件夹,以便于部署。
推荐阅读
- vaadin - 可切换 Vaadin 12 主题的最佳实践
- javascript - 引用变量与“实际”变量(PHP 与 Javascript)
- api - 如何将 tomtom 映射包装到引导容器中
- typescript - npm 脚本未正确启动应用程序
- amazon-web-services - 我可以使用现有的 AWS IAM 角色通过 Cloudformation 模板创建 S3 存储桶吗?
- html - 日期选择器在 Shopify 的页面上不起作用
- python - Keras flow_from_dataframe 提供 0 张图片
- firebase - 如何从 firebase_auth 测试“signInWithEmailAndPassword”
- r - 具有环境的可重现 saveRDS
- angular - 从 Angular 4 转换到 Angular 7 时如何实现“URLSearchParams”和“RequestOptions”