各位有没有遇到部署之后,延时起作用的情况,求原因啊? 实际物理机,都说是没有缓存的.... 睡一觉之后发现居然起作用了,看到那页面的时候,深切感受到什么叫做'坑爹'
如果按 ctrl+f5 刷新后就更新了 看看是不是你的 http server 设置了缓存。
缓存也有两种,一种添加 header,缓存在浏览器 另一种是反向代理的缓存
#5 楼 @assassinpig FYI, Passenger 一般都是线程模型的,没有子进程的概念。Unicorn 才是多进程的,才会有子进程。
#6 楼 @assassinpig touch tmp/restart.txt
就是强制 passenger 重载了你的项目。passenger 启动后会读取你的项目代码放在内存中,如果部署完没有重启 Passenger,内存中的代码就得不到更新,你自然看不到最新代码。所以部署完,都要记得执行touch tmp/restart.txt
,这个操作可以在config/deploy.rb
文件里完成,最后的代码就是一个示例。
具体原因看这个 为什么在 rails 项目中 touch /tmp/restart.txt 这个文件就可以达到更新服务的目的?
另外,不知道你的 Capistrano 版本是 2 还是 3,如果是 2的话,deploy 脚本应该是这样的:
namespace :deploy do
# some other tasks...
desc 'Restart application'
task :restart, :roles => :app do
run "touch #{current_path}/tmp/restart.txt"
end
end
而 capistrano v3提供了一套新的 DSL,新的 deploy 脚本应该是:
namespace :deploy do
# some other tasks...
desc 'Restart application'
task :restart do
on roles(:app), in: :sequence, wait: 5 do
execute :touch, release_path.join('tmp/restart.txt')
end
end
end