【问题标题】:Rails file_store cache clears when redployingRails file_store 缓存在重新部署时清除
【发布时间】:2011-11-05 16:09:07
【问题描述】:

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

【问题讨论】:

  • 每次部署应用时清理缓存是安全的:如果您的缓存页面是旧版本的应用怎么办?
  • 如果我需要使一组缓存页面过期,那么我将使用 rails 控制台手动使它们过期。这样,不受更新影响的页面仍然会被缓存。

标签: ruby-on-rails caching deployment passenger capistrano


【解决方案1】:

在共享目录下建立一个目录来存放缓存。在您的 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'

现在,每当我部署时,我的日志在部署中都是连续的并存储在: */path/to/deploy_dir/shared/log*

【讨论】:

  • 这听起来像我需要的。不幸的是,我无法弄清楚如何在共享目录中创建目录。我想这让我听起来像个新手。如果我在共享服务器上创建一个目录并尝试这个,我会得到这个错误。ln:创建符号链接`{#current_path}/cache':没有这样的文件或目录
  • current_path 的 # 应该在左括号的左侧,例如:#{current_path}/log
  • 感谢 JDutil,我编辑了错字。很高兴它对你有帮助,climer247。
猜你喜欢
  • 1970-01-01
  • 2013-07-04
  • 2012-08-15
  • 2018-04-18
  • 1970-01-01
  • 1970-01-01
  • 2011-02-20
  • 2018-02-14
  • 2017-05-31
相关资源
最近更新 更多