2010-11-12 64 views
2

我使用ActionMailer在後臺作業中發送電子郵件。用戶可以創建新的電子郵件模板,但直到後臺作業重新啓動後才能識別它們。用於使用如何有選擇地關閉Rails中的模板緩存?

ActionView::TemplateFinder.reload! 

強制重新加載模板(現在在2.3.4上已棄用)。我曾嘗試過

ActionView::Base.cache_template_loading = false 

但這並不奏效。

回答

0

由於您的用戶可以創建(也可能更改)模板,爲什麼不將它們存儲在數據庫中並呈現爲內聯erb?現在

render :inline => template_record.contents 

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

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

我用render_message構建內容,其中只使用template_path和替換變量的哈希值。 – SteveD 2010-11-12 03:15:23

+0

郵件代碼在Rails 3.0中好得多,你有沒有考慮升級? – 2010-11-12 03:26:12

+0

期待3.0,但現在不適用於此應用程序。 – SteveD 2010-11-12 17:55:07

1

我清盤做的是設置在我的後臺進程的全局變量加載Rails環境前:

$background = true 

然後在環境/ production.rb:

config.action_view.cache_template_loading = !$background 

不激動,但它的作品。我在後臺作業中爲電子郵件模板重新加載模板,但爲在線應用程序緩存視圖模板。