Ruby on rails 在TeamCity上运行测试时,如何修复tmp目录中的eNONT?

Ruby on rails 在TeamCity上运行测试时,如何修复tmp目录中的eNONT?,ruby-on-rails,ruby-on-rails-4,teamcity,minitest,Ruby On Rails,Ruby On Rails 4,Teamcity,Minitest,我已经建立了TeamCity来为我们的代码库运行测试。有时,一些测试会失败,出现Minitest::UnexpectedError:Errno::enoint:No这样的文件或目录@dir\u initialize。这只发生在使用tmp目录的测试中(在那里缓存或创建文件),并且这些测试随机失败(90%以上的时间没有问题)。我从未在本地遇到过这个错误 我尝试将mkdir tmp添加到控制台构建步骤,但由于目录存在,构建失败。我想知道TeamCity是否在构建中弄乱了目录。我们使用的是Rails 4

我已经建立了TeamCity来为我们的代码库运行测试。有时,一些测试会失败,出现
Minitest::UnexpectedError:Errno::enoint:No这样的文件或目录@dir\u initialize
。这只发生在使用
tmp
目录的测试中(在那里缓存或创建文件),并且这些测试随机失败(90%以上的时间没有问题)。我从未在本地遇到过这个错误

我尝试将
mkdir tmp
添加到控制台构建步骤,但由于目录存在,构建失败。我想知道TeamCity是否在构建中弄乱了目录。我们使用的是Rails 4.2.11.1、Ruby 2.4.6、minitest 5.11.3和TeamCity 2019.1.1


我不知道如何解决这个问题-有什么想法吗?

我通常看到的是,即使Rails服务器重新启动,
/tmp
也无法在本地清除。但是,在CI上运行是不同的,因为它们通常会为每个CI运行分配不同的机器。测试可能失败的某些情况:

  • 如果您的测试直接依赖于“/tmp”中的某些文件
  • 如果您的一些测试依赖于在
    /tmp
  • 请记住,CI可能在多个服务器上并行运行您的套件,因此这是另一个需要考虑的问题。这就是为什么随机运行测试被认为是一种好的做法的原因


    希望这有帮助

    谢谢,它们是一些有用的指针。我们确实有一些测试依赖于
    /tmp
    ——这些测试在这里失败了。我不认为有任何“链接”测试,但我会仔细看看。我将研究重构或尝试确保正确处理
    /tmp
    。谢谢