Rails:资产预编译引发错误键必须为16个字节

问题描述 投票:2回答:2

我将我的密钥存储在环境中,/ 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-rails ruby-on-rails-5 ruby-on-rails-5.2
2个回答
2
投票

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

解决方案>>

您可以通过删除master.key和凭据.yml.enc并运行来重新创建一个新的->

rails credentials:edit

在生产环境中的Ubuntu上设置Rails 6.0应用程序时,我遇到了同样的问题。

我正在使用figarom gem作为环境变量。

问题是我正在复制secret_key_base而不是master_key的内容

这是我的解决方法

删除先前的master.keycredentials.yml.enc文件

重新创建新的master.keycredentials.yml.enc

rails credentials:edit

复制master.key的内容,其格式如下:

34d3cc7c5305dde06865acfa473716cd

用生产中的master_key替换我的RAILS_MASTER_KEY值:

RAILS_MASTER_KEY: "34d3cc7c5305dde06865acfa473716cd"

然后保存。

就是这样。

我希望这会有所帮助


0
投票

在生产环境中的Ubuntu上设置Rails 6.0应用程序时,我遇到了同样的问题。

© www.soinside.com 2019 - 2024. All rights reserved.