【发布时间】:2022-11-09 21:36:54
【问题描述】:
我正在尝试将项目从 attr_encrypted 迁移到 Rails 7 加密。我现在正在做的测试只是在开发和测试环境上,所以现在不需要迁移数据。
我所做的步骤是:
- 将所有内容从
attr_encrypted语法更改为encrypts - 运行
bin/rails db:encryption:init并将这些值添加到开发和测试凭据中 2.1.我还尝试使用RAILS_ENV=test bin/rails db:encryption:init并将它们放入测试凭据中,以防不同的数据库需要不同的值我现在遇到的问题是,每当我运行测试(以干净的数据库开始)时,我都会收到此错误:
ActiveRecord::Encryption::Errors::Configuration: key_derivation_salt is not configured. Please configure it via credential active_record_encryption.key_derivation_salt or by setting config.active_record.encryption.key_derivation_salt虽然如果我进入 Rails 控制台,我会得到以下值:
Credentials[:active_record_encryption] => {:primary_key=>"T..", :deterministic_key=>"k..", :key_derivation_salt=>"6.."}为了解决这个问题或者至少看看有什么帮助,我在环境 Ruby 文件中添加了这些行:
config.active_record.encryption.key_derivation_salt = Credentials[:active_record_encryption][:key_derivation_salt] config.active_record.encryption.primary_key = Credentials[:active_record_encryption][:primary_key] config.active_record.encryption.deterministic_key = Credentials[:active_record_encryption][:deterministic_key]这似乎修复了错误,但测试失败,因为它似乎将值解密为
nil(测试之前通过了ofc)我是否缺少配置步骤?
我认为这些空值来自没有在数据库中更新它们?我该怎么做?
另外,有没有其他方法,所以我不需要将这些行添加到环境文件中?这似乎有点多余。
【问题讨论】:
-
你有没有找到解决这个问题的方法?我遇到了同样的问题。
-
不幸的是我没有
标签: ruby-on-rails ruby encryption ruby-on-rails-7