Rails:在资产预编译期间抛出错误 key must be 16 bytes

iJK*_*iJK 5 ruby-on-rails ruby-on-rails-5 ruby-on-rails-5.2

我将我的密钥存储在环境中,并且 /config/environments/Production.rb 具有 config.require_master_key = true 未注释

config.require_master_key = true
Run Code Online (Sandbox Code Playgroud)

跑步时

RAILS_ENV=production bundle exec rake assets:precompile
Run Code Online (Sandbox Code Playgroud)

我收到错误

/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
Run Code Online (Sandbox Code Playgroud)

关于如何修复此错误有什么想法吗?我还可以做些什么?

Jav*_*izo 4

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

解决方案

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

rails credentials:edit
Run Code Online (Sandbox Code Playgroud)