簡體   English   中英

如何在Rails中有選擇地關閉模板緩存?

[英]How do I selectively turn off template caching in Rails?

我正在使用ActionMailer在后台作業中發送電子郵件。 用戶可以創建新的電子郵件模板,但是直到重新啟動后台作業后才能識別它們。 曾經使用

ActionView::TemplateFinder.reload!

從而強制重新加載模板(現已在2.3.4中棄用)。 我努力了

ActionView::Base.cache_template_loading = false

但這不起作用。

我最后要做的是在加載Rails環境之前在后台進程中設置一個全局變量:

$background = true

然后在environment / production.rb中:

config.action_view.cache_template_loading = !$background

不為所動,但確實有效。 我在后台作業中為電子郵件模板重新加載了模板,但是為在線應用程序緩存了視圖模板。

由於您的用戶可以創建(並可能更改)模板,因此為什么不將它們存儲在數據庫中並呈現為嵌入式erb?

render :inline => template_record.contents

現在,我建議了這一點,我注意到了...您還可以使用:inline手動讀取模板並將其傳遞給ActionView。 但是,您將不得不處理模板不存在的特殊情況。

render :inline => File.read( ... )

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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