2011-11-05 64 views
0

我不断开发我的rails应用程序并每隔1或2周大概部署一次。我有很多内容需要缓存一段时间。我切换到使用rails file_store进行缓存,因为其他缓存选项将缓存存储在内存中,当我必须重新启动乘客时,缓存将消失。我遇到的问题是,每次部署更新时,即使它是基于文件的,我仍然会释放缓存。有没有一种方法可以防止在为rails应用程序部署更新时清除缓存?我正在使用capistrano进行部署,并使用git进行版本控制。Rails file_store缓存在重新部署时清除

+0

每次部署应用程序时清理缓存是安全的:如果您的应用程序的旧版本是缓存页面,该怎么办? – apneadiving

+0

如果我需要过期一组缓存页面,那么我将使用rails控制台手动过期。这样,不受更新影响的页面仍然被缓存。 –

回答

2

在共享目录下创建一个目录来存放缓存。在您的deploy.rb中,创建一个符号链接到旧缓存目录以前的新目录。例如,这里是我如何符号链接的日志目录的简化版本:

namespace :deploy do 
    desc "Re-link log files" 
    task :link_logs, :roles => :app do 
    run "ln -nfs '#{shared_path}/log' '#{current_path}/log'" 
    end 
end 

# Activate post-deploy re-linking 
after 'deploy:symlink', 'deploy:link_logs' 

现在,每当我部署,我的日志是整个展开时连续并存储在: * /路径/到/ DEPLOY_DIR /共享/日志*

+0

这听起来像我所需要的。不幸的是我无法弄清楚如何在共享目录中创建一个目录。我想这让我听起来像一个全新的。如果我在共享服务器上创建一个目录并尝试这个,我得到这个error.ln:创建符号链接'{#current_path}/cache':没有这样的文件或目录 –

+0

#对于current_path应该在开头的左侧括号如:#{current_path}/log – JDutil

+0

谢谢。它现在很好用。 –