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

标签 ruby-on-rails capistrano resque

我有两个同时要排队的工作,并且有一个 worker 连续运行它们。这两个作业都从我的Rails项目的根目录中的builds/目录复制一些文件,并将它们放置在一个临时文件夹中。

第一个工作总是成功,永远不会有问题-哪个工作先运行也没关系。第一个将工作。

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

No such file or directory - /Users/apps/Sites/my-site/releases/20130829065128/builds/foo



该发布文件夹已经有两个星期的历史了,不应再放在服务器上。它是空的,仅包含一个public/uploads目录,没有其他内容。我杀死了我所有的 worker ,并多次重启了他们,并多次重新部署了Rails应用程序。当我删除该发布目录时,它将再次进入。

我目前不知道该怎么办。为什么这个工作人员总是在这个旧发行目录中创建/查找?为什么只有第二个 worker 这样做?我通过使用以下方式获取路径:
Rails.root.join('builds')-Rails.root显然是2周大的capistrano版本?我还应该提到,这仅在生产环境中发生。我能做什么

最佳答案

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

根据路径名,看起来您正在使用Capistrano进行部署。

您在使用capistrano-resque gem吗?如果没有,您应该看一下。

关于ruby-on-rails - 在Resque作业期间,Rails.root指向生产中的错误目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18820899/

相关文章:

ruby-on-rails - 在resque队列中查找特定作业

ruby-on-rails - 我如何查看哪些作业已使用 resque-scheduler 排队?

ruby-on-rails - Capistrano 3 进程失败

ruby-on-rails - Rake Capistrano - 如何传递动态参数来执行 shell 命令

ruby-on-rails - 为什么不使用 ActiveJob 发送电子邮件?

heroku - Resque失去与heroku上redis的连接

ruby-on-rails - 非常长的 html 属性的 Haml 多行

ruby-on-rails - 创建对象时是否需要foreign_key列?

ruby-on-rails - 本地化月份名称 - 日历 Railscasts #213

ruby-on-rails - 对一组在 Ruby 中几乎匹配的实例进行分组