我正在使用ActionMailer在后台作业中发送电子邮件。用户可以创建新的电子邮件模板,但在重新启动后台作业之前无法识别它们。习惯使用
ActionView::TemplateFinder.reload!
强制重新加载模板(现在已在2.3.4上弃用)。我试过了
ActionView::Base.cache_template_loading = false
但这不起作用。
答案 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( ... )