在Resque作业期间,Rails.root指向生产中的错误目录

Log*_*man 9 capistrano ruby-on-rails resque

我有两个同时排队的工作,一个工人连续运行它们.这两个作业都复制了builds/我的Rails项目根目录中的一些文件,并将它们放入一个临时文件夹中.

第一份工作总是成功,从来没有问题 - 哪个工作先运行也没关系.第一个将工作.

第二个在尝试复制文件时收到此错误:

没有这样的文件或目录 - /Users/apps/Sites/my-site/releases/20130829065128/builds/foo

该版本文件夹已有两周时间了,不应该仍在服务器上.它是空的,只包含一个公共/上传目录,没有别的.我已经杀死了我的所有工作人员并多次重新启动它们,并多次重新部署Rails应用程序.当我删除那个版本目录时,它再次成功.

我不知道该做什么.为什么这个工作者总是在这个旧版本目录中创建/查看?为什么只有第二个工人这样做?我通过使用获得路径:

Rails.root.join('builds') - Rails.root显然是一个2周的capistrano发布?我还应该提到这只发生在生产环境中.我能做什么 ?

Pep*_*ppy 0

部署时救援未重新启动(停止和启动),这导致运行旧版本的代码。每个工作人员继续为队列提供服务,从而导致奇怪的错误或行为。

根据路径名称,您似乎正在使用 Capistrano 进行部署。

您使用的是Capistrano 风格的宝石吗?如果没有,你应该看看。