首页 > 解决方案 > 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

有关如何解决此错误的任何想法?我还可以做些什么?

标签: ruby-on-railsruby-on-rails-5ruby-on-rails-5.2

解决方案


您的问题是您生成的密钥比 rails 预期的要长https://github.com/rails/rails/issues/33528#issuecomment-412677795

解决方案

您可以通过删除您的 master.key 和 credentials.yml.enc 重新创建一个新的并运行

rails credentials:edit

推荐阅读