Ruby on rails Rails:在资产预编译抛出期间,错误键必须为16字节
我将密钥存储在环境中,/config/environments/production.rb具有config.require\u master\u key=true未注释Ruby on rails Rails:在资产预编译抛出期间,错误键必须为16字节,ruby-on-rails,ruby-on-rails-5,ruby-on-rails-5.2,Ruby On Rails,Ruby On Rails 5,Ruby On Rails 5.2,我将密钥存储在环境中,/config/environments/production.rb具有config.require\u master\u key=true未注释 config.require_master_key = true 跑步时 RAILS_ENV=production bundle exec rake assets:precompile 我得到了错误 /Users/something/Development/wwwroot/trivial/config/environment
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
/Users/something/Development/wwwroot/tritile/config/environment.rb:5:in`'
/Users/something/.rbenv/versions/2.5.1/bin/bundle:23:在'load'中
/Users/something/.rbenv/versions/2.5.1/bin/bundle:23:in`'
原因:
ArgumentError:密钥必须为16字节
/Users/something/Development/wwwroot/triple/config/environment.rb:5:in`'
/Users/something/.rbenv/versions/2.5.1/bin/bundle:23:在'load'中
/Users/something/.rbenv/versions/2.5.1/bin/bundle:23:in`'
任务:TOP=>environment
关于如何修复这个错误有什么想法吗?我还能做什么?您的问题是,您生成的密钥比rails期望的更长 解决方案 您可以通过删除master.key和credentials.yml.enc并运行
rails credentials:edit
我在生产中在Ubuntu上安装Rails 6.0应用程序时遇到了同样的问题 我使用figaro gem作为我的环境变量 问题是我复制了
密钥库
的内容,而不是主密钥
以下是我解决问题的方法
删除以前的master.key
和credentials.yml.enc
文件
重新创建新的master.key
和credentials.yml.enc
:
rails credentials:edit
或
EDITOR="code --wait" bin/rails credentials:edit # If you want to use VS Code as your editor
复制此格式的master.key的内容:
34d3cc7c5305dde06865acfa473716cd
将myRAILS\u MASTER\u KEY
值替换为生产中的MASTER\u KEY:
RAILS_MASTER_KEY: "34d3cc7c5305dde06865acfa473716cd"
然后保存它
注意:如果在.env
文件(.env
,.env.development
,.env.test
,.env.production
)中设置/指定了错误的RAILS\u MASTER\u KEY
环境变量,也可能会遇到此问题。假设您只是想暂时将其用作占位符。这也可能引发一个错误:如果您试图使用rails凭据:edit
生成新的master.key
和credentials.yml.enc
文件,则密钥必须是16字节(ArgumentError)
您需要做的是在.env
文件中提供正确的RAILS\u MASTER\u KEY
环境变量,或者注释掉RAILS\u MASTER\u KEY
环境变量(如果未使用)
就这样
我希望这对我有所帮助我必须确保删除.env文件中密钥周围的引号 似乎我的服务器(AWS ECS Fargate)正在将“”作为密钥的一部分进行计数。在当地,一切都很好 以前
RAILS_MASTER_KEY="12345"
之后
是不是
34d3cc7c5305dde06865acfa473716cd
32字节?
RAILS_MASTER_KEY=12345