2011-11-05 45 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

謝謝。它現在很好用。 –