ruby-on-rails Rails:在资产预编译期间抛出错误键必须为16字节

wkyowqbh  于 2023-10-21  发布在  Ruby
关注(0)|答案(4)|浏览(130)

我将密钥存储在environment中,并且/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

有什么办法可以解决这个错误吗?我还能做什么?

vd8tlhqk

vd8tlhqk1#

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

解决方案

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

rails credentials:edit
xzlaal3s

xzlaal3s2#

我在生产环境中在Ubuntu上设置Rails 6.0应用程序时也遇到了同样的问题。
我使用figaro gem作为环境变量。
问题是我复制的是secret_key_base的内容,而不是master_key的内容。

我是这么解决的

删除之前的master.keycredentials.yml.enc文件
重新创建新的master.keycredentials.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

在生产环境中将我的RAILS_MASTER_KEY值替换为master_key:

RAILS_MASTER_KEY: "34d3cc7c5305dde06865acfa473716cd"

然后保存它。

注意:如果您在.env文件(.env.env.development.env.test.env.production)中设置/指定了错误的RAILS_MASTER_KEY环境变量,也可能会遇到此问题。假设您只是想暂时将其用作占位符。如果尝试使用rails credentials:editEDITOR="code --wait" bin/rails credentials:edit生成新的master.keycredentials.yml.enc文件,也可能会抛出错误key=': key must be 16 bytes (ArgumentError)

您需要做的是在.env文件中提供正确的RAILS_MASTER_KEY环境变量,或者注解掉RAILS_MASTER_KEY环境变量(如果您不使用它)。
就这样

希望这能帮上忙

6ljaweal

6ljaweal3#

对我来说,我必须确保我删除了我的.env文件中键周围的引号。
似乎我的服务器(AWS ECS Fargate)将“”作为密钥的一部分。在当地,一切都很好。
之前

RAILS_MASTER_KEY="12345"

RAILS_MASTER_KEY=12345
iyfamqjs

iyfamqjs4#

你可以在你的终端里运行这个

heroku config:set RAILS_MASTER_KEY=`cat config/master.key`

您可以按照教程here

相关问题