我使用ActionMailer在后台作业中发送电子邮件。用户可以创建新的电子邮件模板,但在重新启动后台作业之前无法识别这些模板。过去经常使用
ActionView::TemplateFinder.reload!
它强制重新加载模板(在2.3.4中已被弃用)。我试过了
ActionView::Base.cache_template_loading = false
但这并不管用。
发布于 2010-11-13 03:26:40
我最后做的是在加载Rails环境之前在后台进程中设置一个全局变量:
$background = true
然后在environments/production.rb中:
config.action_view.cache_template_loading = !$background
不是很兴奋,但很管用。我在后台工作中得到了电子邮件模板的重新加载,但为在线应用程序缓存了视图模板。
发布于 2010-11-12 10:09:37
既然您的用户可以创建(也可能更改)模板,为什么不将它们存储在数据库中并呈现为内联erb?
render :inline => template_record.contents
现在我提出了这个建议,我注意到...您还可以使用:inline
手动读取模板并将其传递给ActionView。不过,您必须处理模板不存在的异常情况。
render :inline => File.read( ... )
https://stackoverflow.com/questions/4160818
复制相似问题