如何在Rails中有选择地关闭模板缓存?

时间:2010-11-12 01:16:04

标签: ruby-on-rails templates caching

我正在使用ActionMailer在后台作业中发送电子邮件。用户可以创建新的电子邮件模板,但在重新启动后台作业之前无法识别它们。习惯使用

ActionView::TemplateFinder.reload!

强制重新加载模板(现在已在2.3.4上弃用)。我试过了

ActionView::Base.cache_template_loading = false

但这不起作用。

2 个答案:

答案 0 :(得分:1)

我最后做的是在加载Rails环境之前在后台进程中设置一个全局变量:

$background = true

然后在environment / production.rb中:

config.action_view.cache_template_loading = !$background

不激动,但它有效。我在后台作业中为电子邮件模板重新加载模板,但是在线应用程序的缓存视图模板。

答案 1 :(得分:0)

由于您的用户可以创建(并可能更改)模板,为什么不将它们存储在数据库中并呈现为内联erb?

render :inline => template_record.contents

现在我建议了这一点,我注意到了......您也可以使用:inline手动读取模板并将其传递给ActionView。但是,您必须处理模板不存在的例外情况。

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