我正在嘗試為 Rails 后端設定 Circle CI 以自動化大量測驗,其中一些測驗是使用帶有 erb 標簽的 YAML 固定裝置的遺留代碼。我正在使用 Ruby 2.6.9、Rails 5.2.6、Circle CI 泊塢窗影像拒絕決議這些檔案的格式錯誤。
燈具外觀示例:
<% 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在 Circle CI docker 鏡像中運行測驗時出錯
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'
我嘗試將 erb 標簽從 yaml 檔案中取出,而只是對動態值進行硬編碼,但這會帶來其他問題(如果我想這樣做,我幾乎必須逐行重構 1000 個測驗)。建議的解決方案是使用 .yaml.erb 格式而不是 .yml 格式作為固定裝置,但似乎 Rails 在更改格式后沒有拾取固定裝置!關于如何以最少的重構來處理這個問題的任何想法?
PS:所有測驗都在多臺機器上本地通過,沒有任何問題。
uj5u.com熱心網友回復:
更新:原來這不是 yaml 決議問題,當 rails 加載固定裝置時,您還可以得到引數錯誤,如果您使用動態 yaml 可能來自您的模型,在我的情況下,它是一個丟失的環境變數破壞了作為回報的模型停止了固定裝置的加載。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/456270.html
標籤:轨道上的红宝石 红宝石 持续集成 圈子 circleci-2.0
上一篇:Rails7控制器裝飾器未初始化僅在生產中出現常量錯誤
下一篇:在Ruby中組合管道和括號的規則
