[英]Ruby gsub, NoMemoryError: failed to allocate memory.
我們緩存了一個html模板-具有占位符值。 根據實際對象的值,將替換占位符。 這通常可以正常工作,但有時會導致錯誤(分配內存失敗)。
replacement_hash.keys.each do |placeholder|
value = ##some logic to get values from model using placeholder text.
text.gsub!(placeholder, value)
end
關於如何解決(提高效率)的任何建議或其他替代方法可以做到這一點?
謝謝
這是由於錯誤的用戶數據-包含無效值的字符串-導致gsub無法正常工作,並且再次插入了將被gsub替換的相同字符串。
並且代碼具有遞歸功能,該功能將繼續替換事物,直到沒有帶[[xxx]]的字符串為止-這導致代碼進入循環直到內存已滿。
"Kiprosh [[signature]]".gsub("[[signature]]", "\0 and \0")
expected => "Kiprosh \0 and \0"
actual => "Kiprosh [[signature]] and [[signature]]"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.