是否可以配置 Rails,以便使用 caches_page 创建的缓存在 Capistrano 部署中存活?即,我可以将缓存配置为保存到共享目录而不是公共目录中吗?
问问题
957 次
3 回答
4
接受的答案是可以的,但通常最好不要在部署时复制所有内容,而只是符号链接缓存文件夹。
这样,您可以在 shared/ 目录中创建您的文件夹,并在部署时对其进行符号链接,例如:
namespace :deploy do
desc "Link cache folder to the new release"
task :link_cache_folder, :roles => :app, :on_error => :continue do
run "ln -s #{shared_path}/cache #{latest_release}/public/cache"
end
end
before "deploy:symlink", "deploy:link_cache_folder"
于 2010-03-09T12:31:28.763 回答
1
Capistrano 与 Rails 并不真正相关,它只是被 Rails 社区普遍用于部署。所以不,你不能“配置 Rails”来做你想做的事。您可以做的是向您的 Capfile 添加一个任务,该任务运行 shell 命令以将缓存复制到您的新部署中,然后再将其符号链接为“当前”。
namespace :deploy do
desc "Copy cache to the new release"
task :cache_copy, :roles => :app, :on_error => :continue do
on_rollback {
run "rm -rf #{latest_release}/public/cache"
}
run "cp -a #{current_path}/public/cache #{latest_release}/public"
end
end
before "deploy:symlink", "deploy:cache_copy"
但我真的不认为你想对缓存页面做这样的事情,因为缓存可能与新代码的输出不同步。
于 2010-03-08T23:16:52.747 回答
0
我发现这足以让 public/cache 目录在共享下符号链接:
set :shared_children, shared_children + ["public/cache"]
于 2013-02-10T19:09:42.083 回答