我将密钥存储在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
有什么办法可以解决这个错误吗?我还能做什么?
4条答案
按热度按时间vd8tlhqk1#
您的问题是您生成的密钥比rails期望的要长https://github.com/rails/rails/issues/33528#issuecomment-412677795
解决方案
您可以通过删除master.key和credentials. yml.enc重新创建一个新的,然后运行
xzlaal3s2#
我在生产环境中在Ubuntu上设置Rails 6.0应用程序时也遇到了同样的问题。
我使用figaro gem作为环境变量。
问题是我复制的是
secret_key_base
的内容,而不是master_key
的内容。我是这么解决的
删除之前的
master.key
和credentials.yml.enc
文件重新创建新的
master.key
和credentials.yml.enc
:或
复制master.key的内容,其格式如下:
在生产环境中将我的
RAILS_MASTER_KEY
值替换为master_key:然后保存它。
注意:如果您在
.env
文件(.env
、.env.development
、.env.test
、.env.production
)中设置/指定了错误的RAILS_MASTER_KEY
环境变量,也可能会遇到此问题。假设您只是想暂时将其用作占位符。如果尝试使用rails credentials:edit
或EDITOR="code --wait" bin/rails credentials:edit
生成新的master.key
和credentials.yml.enc
文件,也可能会抛出错误key=': key must be 16 bytes (ArgumentError)
您需要做的是在
.env
文件中提供正确的RAILS_MASTER_KEY
环境变量,或者注解掉RAILS_MASTER_KEY
环境变量(如果您不使用它)。就这样
希望这能帮上忙
6ljaweal3#
对我来说,我必须确保我删除了我的.env文件中键周围的引号。
似乎我的服务器(AWS ECS Fargate)将“”作为密钥的一部分。在当地,一切都很好。
之前
后
iyfamqjs4#
你可以在你的终端里运行这个
您可以按照教程here