ruby-on-rails - Rails:在资产预编译期间抛出错误键必须是 16 字节
问题描述
我将我的密钥存储在环境中,并且 /config/environments/production.rb 有 config.require_master_key = true 未注释
config.require_master_key = true
跑步时
RAILS_ENV=production bundle exec rake assets:precompile
我得到错误
/Users/something/Development/wwwroot/trivial/config/environment.rb:5:in `<main>'
/Users/something/.rbenv/versions/2.5.1/bin/bundle:23:in `load'
/Users/something/.rbenv/versions/2.5.1/bin/bundle:23:in `<main>'
Caused by:
ArgumentError: key must be 16 bytes
/Users/something/Development/wwwroot/trivial/config/environment.rb:5:in `<main>'
/Users/something/.rbenv/versions/2.5.1/bin/bundle:23:in `load'
/Users/something/.rbenv/versions/2.5.1/bin/bundle:23:in `<main>'
Tasks: TOP => environment
有关如何解决此错误的任何想法?我还可以做些什么?
解决方案
您的问题是您生成的密钥比 rails 预期的要长https://github.com/rails/rails/issues/33528#issuecomment-412677795
解决方案
您可以通过删除您的 master.key 和 credentials.yml.enc 重新创建一个新的并运行
rails credentials:edit
推荐阅读
- database - getLibraryDirectory 不适用于桌面应用程序
- java - java.lang.annotation 无法解析
- visual-studio-code - 从 Visual Studio Code 部署 Azure WebJob
- typescript - 禁止通过 void/never 重载来调用 0 函数
- sql - 日期范围之间的 PostgreSQL 查询,但仅在特定时间之间
- python - 如何对存储为 Python 列表中的 numpy 数组的数字运行 for 循环
- python - 用于大型处理的 Dynamodb Stream
- python - 使用 Flask 的动态表单?
- laravel - 在 Laravel Eloquent 中,我可以在没有数据透视表的情况下定义多对多关系吗?
- mysql - 为什么使用 IN 作为子查询的一部分的 where 子句在显式完成时会返回不同的行数?