首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何有选择地关闭Rails中的模板缓存?

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

Stack Overflow用户
提问于 2010-11-12 09:16:04
回答 2查看 1K关注 0票数 2

我使用ActionMailer在后台作业中发送电子邮件。用户可以创建新的电子邮件模板,但在重新启动后台作业之前无法识别这些模板。过去经常使用

代码语言:javascript
运行
复制
ActionView::TemplateFinder.reload!

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

代码语言:javascript
运行
复制
ActionView::Base.cache_template_loading = false

但这并不管用。

EN

回答 2

Stack Overflow用户

发布于 2010-11-13 03:26:40

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

代码语言:javascript
运行
复制
$background = true

然后在environments/production.rb中:

代码语言:javascript
运行
复制
config.action_view.cache_template_loading = !$background

不是很兴奋,但很管用。我在后台工作中得到了电子邮件模板的重新加载,但为在线应用程序缓存了视图模板。

票数 1
EN

Stack Overflow用户

发布于 2010-11-12 10:09:37

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

代码语言:javascript
运行
复制
render :inline => template_record.contents

现在我提出了这个建议,我注意到...您还可以使用:inline手动读取模板并将其传递给ActionView。不过,您必须处理模板不存在的异常情况。

代码语言:javascript
运行
复制
render :inline => File.read( ... )
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4160818

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档