【发布时间】:2013-09-20 04:23:13
【问题描述】:
我有两个同时排队的工作,一个工作人员连续运行它们。这两个作业都从我的 Rails 项目根目录中的builds/ 目录中复制一些文件,并将它们放入一个临时文件夹中。
第一个作业总是成功的,从来没有问题 - 哪个作业先运行也没有关系。第一个会起作用。
第二个在尝试复制文件时收到此错误:
没有这样的文件或目录 - /Users/apps/Sites/my-site/releases/20130829065128/builds/foo
该版本文件夹已有两周的历史,不应仍在服务器上。它是空的,只有一个 public/uploads 目录,没有别的。我已经杀死了所有的工人并多次重新启动它们,并多次重新部署了 Rails 应用程序。当我删除该发布目录时,它会再次出现。
我现在不知道该怎么办。为什么这个工人总是在这个旧的发布目录中创建/查看?为什么只有第二个工人会这样做?我正在使用以下方法获取路径:
Rails.root.join('builds') - Rails.root 显然是 2 周前的 capistrano 版本?我还应该提到这只发生在生产环境中。我能做些什么
?
【问题讨论】:
-
这个工人可能是从那个特定版本中部署的代码中产生的。假设没有其他东西可以是那个路径名的来源
-
我怀疑您有一个代码可以更改 rails env 中的目录。您的代码中是否引用了
Dir.chdir?请查看以下文档以供参考:ruby-doc.org/core-2.1.2/Dir.html#method-c-chdir
标签: ruby-on-rails capistrano resque