2012-02-13 82 views
1

我有一个Rails应用程序,它显示呈现为部分内容的内容,该内容位于我的Rails应用程序之外,但位于同一网站上服务器。如何停止从外部应用程序缓存部分缓存或使用任务清除缓存

这一切都显示正常,但这一点的目的是让别人无需重新启动rails应用程序将内容推送到此文件夹。部署和显示没问题,但是内容被缓存了,所以在重新启动服务器之前它仍然不会更新。我试图创建待命片段的部分,当内容被部署创建rake任务将其删除:

笔者认为:

<% cache("frag_key") do %> 
     <%= render :partial => "#{@content_path}.rhtml" %> 
    <% end %> 

Rake任务

namespace :cache do 
     desc 'Clear memcache' 
     task :clear => :environment do 
     Rails.cache.delete('frag_key') 
     end 
    end 

是有没有办法阻止这些特定文件的缓存? 我的解决方案理论上应该工作,我做错了什么? 任何帮助表示赞赏。

编辑:我还应该注意我没有使用memcache。

回答

-1

您的解决方案不起作用。如果你想真正渲染文件,你需要重新启动应用程序或禁用缓存,这将会让你的应用程序变慢。

您可以做的仅仅是将部分视为外部文件,并使用标准IO操作从光盘读取。如果你需要执行一些rails代码或者可以访问应用程序的细节,这种方法是行不通的。

我记得在josévalims精彩的书籍“Crafting Rails Applications”中阅读了关于在数据库中存储视图代码的内容。也许这会给你一些关于如何找到解决问题的方法。