簡體   English   中英

Ruby gsub,NoMemoryError:無法分配內存。

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM