如何解决bm_demo_app环境下secret_key_base缺失的启动报错?
解决Rails环境
bm_demo_app启动Unicorn时secret_key_base缺失问题 问题重现
启动Unicorn服务器时抛出错误:
/home/ubuntu/.rvm/gems/ruby-2.7.4/gems/railties-6.0.6/lib/rails/application.rb:588:in `validate_secret_key_base': Missing `secret_key_base` for 'bm_demo_app' environment, set this string with `rails credentials:edit` (ArgumentError)
已尝试操作
- 生成环境专属密钥:
RAILS_ENV=bm_demo_app rake secret - 创建
master.key(但解密默认credentials失败) - 创建环境专属的
bm_demo_app.key和加密凭据文件
解决方案
1. 确保环境专属凭据中包含secret_key_base
执行命令编辑bm_demo_app环境的凭据:
EDITOR=nano bin/rails credentials:edit --environment=bm_demo_app
在打开的YAML文件中添加以下内容(替换为你之前生成的密钥字符串):
secret_key_base: 5d171b5b9650e29eb6bedb67fec4b937e09f3a255c2b0bdb035232089e8c70356b19ec715a5cc5816220992b23eb566854451c42d44f9c6d03b2ceb17d748d41
保存并退出,确保文件被加密保存。
2. 验证密钥文件权限与Unicorn启动参数
- 调整
bm_demo_app.key的权限,确保只有当前用户可读:chmod 600 config/credentials/bm_demo_app.key - 启动Unicorn时明确指定环境变量:
RAILS_ENV=bm_demo_app bundle exec unicorn -c config/unicorn.rb
3. 备选方案(适合测试环境)
如果上述方法仍不生效,可直接在环境配置文件中设置密钥:
- 创建或打开
config/environments/bm_demo_app.rb - 添加以下配置:
Rails.application.configure do config.secret_key_base = '5d171b5b9650e29eb6bedb67fec4b937e09f3a255c2b0bdb035232089e8c70356b19ec715a5cc5816220992b23eb566854451c42d44f9c6d03b2ceb17d748d41' end - 重启Unicorn服务
问题原因说明
之前的操作仅创建了环境专属的密钥文件,但未在加密凭据中写入secret_key_base配置项,导致Rails无法读取到所需的密钥。默认凭据解密失败不影响环境专属凭据的使用,二者是独立的配置体系。
内容的提问来源于stack exchange,提问作者Suhas Shinde
相关产品推荐
相关产品推荐

