我使用ActionMailer在後臺作業中發送電子郵件。用戶可以創建新的電子郵件模板,但直到後臺作業重新啓動後才能識別它們。用於使用如何有選擇地關閉Rails中的模板緩存?
ActionView::TemplateFinder.reload!
強制重新加載模板(現在在2.3.4上已棄用)。我曾嘗試過
ActionView::Base.cache_template_loading = false
但這並不奏效。
我使用ActionMailer在後臺作業中發送電子郵件。用戶可以創建新的電子郵件模板,但直到後臺作業重新啓動後才能識別它們。用於使用如何有選擇地關閉Rails中的模板緩存?
ActionView::TemplateFinder.reload!
強制重新加載模板(現在在2.3.4上已棄用)。我曾嘗試過
ActionView::Base.cache_template_loading = false
但這並不奏效。
由於您的用戶可以創建(也可能更改)模板,爲什麼不將它們存儲在數據庫中並呈現爲內聯erb?現在
render :inline => template_record.contents
,我建議這一點,我注意到...您還可以使用:inline
手動讀取模板,並將其傳遞給的ActionView。不過,您必須處理模板不存在的特殊情況。
render :inline => File.read(...)
我清盤做的是設置在我的後臺進程的全局變量加載Rails環境前:
$background = true
然後在環境/ production.rb:
config.action_view.cache_template_loading = !$background
不激動,但它的作品。我在後臺作業中爲電子郵件模板重新加載模板,但爲在線應用程序緩存視圖模板。
我用render_message構建內容,其中只使用template_path和替換變量的哈希值。 – SteveD 2010-11-12 03:15:23
郵件代碼在Rails 3.0中好得多,你有沒有考慮升級? – 2010-11-12 03:26:12
期待3.0,但現在不適用於此應用程序。 – SteveD 2010-11-12 17:55:07