Rails 没有拿起 .yaml.erb 固定装置?

Rails not picking up .yaml.erb fixtures?

我正在尝试为 Rails 后端设置 Circle CI 以自动执行大量测试,其中一些测试是使用带有 erb 标签的 YAML 固定装置的遗留代码。我正在使用 Ruby 2.6.9,Rails 5.2.6,Circle CI docker 图像拒绝解析这些格式错误的文件。

An example of how the fixtures look :

<% mt = Medtest.new(result: "Positive") %>
covid19_positive:
  user: user1
  medtest_type: COVID-19
  encrypted_result: <%= mt.encrypted_result %>
  encrypted_result_iv: <%= mt.encrypted_result_iv %>
  result_bidx: <%= Medtest.generate_result_bidx("Positive").inspect %>
  test_date: <%= 10.days.ago.to_s(:db) %>
  created_at: <%= 10.days.ago.to_s(:db) %>
  shared: true

error when running test in Circle CI docker image

RuntimeError: Wrapped undumpable exception for: ActiveRecord::Fixture::FormatError: a YAML error occurred parsing /home/circleci/project/test/fixtures/medtests.yml. Please note that YAML must be consistently indented using spaces. Tabs are not allowed. Please have a look at http://www.yaml.org/faq.html
The exact error was:
  ArgumentError: must specify a key
    test/fixtures/medtests.yml:1:in `get_binding'

我尝试从 yaml 文件中取出 erb 标签,只是硬编码动态值,但这带来了其他问题(如果我想这样做,我几乎必须逐行重构 1000 个测试) .建议的解决方案是对灯具使用 .yaml.erb 格式而不是 .yml 格式,但似乎 Rails 在更改格式后没有拾取灯具!关于如何用最少的重构来处理这个问题有什么想法吗?

PS:所有测试都在多台机器上本地通过,没有任何问题。

更新:事实证明这不是 yaml 解析问题,当 rails 加载固定装置时,您也可能会遇到参数错误,如果您使用的是动态 yaml,则可能来自您的模型,就我而言,这是一个丢失的环境变量,它破坏了模型,在 return 中阻止了装置的加载。