Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/53.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails:在资产预编译抛出期间,错误键必须为16字节_Ruby On Rails_Ruby On Rails 5_Ruby On Rails 5.2 - Fatal编程技术网

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

Ruby on rails Rails:在资产预编译抛出期间,错误键必须为16字节,ruby-on-rails,ruby-on-rails-5,ruby-on-rails-5.2,Ruby On Rails,Ruby On Rails 5,Ruby On Rails 5.2,我将密钥存储在环境中,/config/environments/production.rb具有config.require\u master\u key=true未注释 config.require_master_key = true 跑步时 RAILS_ENV=production bundle exec rake assets:precompile 我得到了错误 /Users/something/Development/wwwroot/trivial/config/environment

我将密钥存储在环境中,/config/environments/production.rb具有config.require\u master\u 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
/Users/something/Development/wwwroot/tritile/config/environment.rb:5:in`'
/Users/something/.rbenv/versions/2.5.1/bin/bundle:23:在'load'中
/Users/something/.rbenv/versions/2.5.1/bin/bundle:23:in`'
原因:
ArgumentError:密钥必须为16字节
/Users/something/Development/wwwroot/triple/config/environment.rb:5:in`'
/Users/something/.rbenv/versions/2.5.1/bin/bundle:23:在'load'中
/Users/something/.rbenv/versions/2.5.1/bin/bundle:23:in`'
任务:TOP=>environment

关于如何修复这个错误有什么想法吗?我还能做什么?

您的问题是,您生成的密钥比rails期望的更长

解决方案

您可以通过删除master.key和credentials.yml.enc并运行

rails credentials:edit

我在生产中在Ubuntu上安装Rails 6.0应用程序时遇到了同样的问题

我使用figaro gem作为我的环境变量

问题是我复制了
密钥库
的内容,而不是
主密钥

以下是我解决问题的方法

删除以前的
master.key
credentials.yml.enc
文件

重新创建新的
master.key
credentials.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
将my
RAILS\u MASTER\u KEY
值替换为生产中的MASTER\u KEY:

RAILS_MASTER_KEY: "34d3cc7c5305dde06865acfa473716cd"
然后保存它

注意:如果在
.env
文件(
.env
.env.development
.env.test
.env.production
)中设置/指定了错误的
RAILS\u MASTER\u KEY
环境变量,也可能会遇到此问题。假设您只是想暂时将其用作占位符。这也可能引发一个错误:如果您试图使用
rails凭据:edit
生成新的
master.key
credentials.yml.enc
文件,则密钥必须是16字节(ArgumentError)

您需要做的是在
.env
文件中提供正确的
RAILS\u MASTER\u KEY
环境变量,或者注释掉
RAILS\u MASTER\u KEY
环境变量(如果未使用)

就这样


我希望这对我有所帮助

我必须确保删除.env文件中密钥周围的引号

似乎我的服务器(AWS ECS Fargate)正在将“”作为密钥的一部分进行计数。在当地,一切都很好

以前

RAILS_MASTER_KEY="12345"
之后


是不是
34d3cc7c5305dde06865acfa473716cd
32字节?
RAILS_MASTER_KEY=12345