Rails 5.1,Errno :: EMFILE:太多打开的文件 - getcwd

Rails 5.1,Errno :: EMFILE:太多打开的文件 - getcwd

问题描述:

在我运行我的整个/ spec目录时,我在过去几天开始看到这个错误。我怀疑它揭示了我的测试状态 - 它是随机发生的。我的直觉是它可能是rails_helper.rb中的配置问题。Rails 5.1,Errno :: EMFILE:太多打开的文件 - getcwd

Errno::EMFILE: 
    Too many open files - getcwd 
# /Users/fred/.rvm/gems/ruby-2.4.1/gems/carrierwave-0.11.2/lib/carrierwave/sanitized_file.rb:115:in `expand_path' 
# /Users/fred/.rvm/gems/ruby-2.4.1/gems/carrierwave-0.11.2/lib/carrierwave/sanitized_file.rb:115:in `path' 
# /Users/fred/.rvm/gems/ruby-2.4.1/gems/carrierwave-0.11.2/lib/carrierwave/sanitized_file.rb:146:in `exists?' 
# /Users/fred/.rvm/gems/ruby-2.4.1/gems/carrierwave-0.11.2/lib/carrierwave/sanitized_file.rb:95:in `size' 
# /Users/fred/.rvm/gems/ruby-2.4.1/gems/carrierwave-0.11.2/lib/carrierwave/sanitized_file.rb:137:in `empty?' 
# /Users/fred/.rvm/gems/ruby-2.4.1/gems/carrierwave-0.11.2/lib/carrierwave/uploader/cache.rb:131:in `cache!' 
# /Users/fred/.rvm/gems/ruby-2.4.1/gems/carrierwave-0.11.2/lib/carrierwave/mount.rb:329:in `cache' 
# /Users/fred/.rvm/gems/ruby-2.4.1/gems/carrierwave-0.11.2/lib/carrierwave/mount.rb:163:in `attachment=' 
# /Users/fred/.rvm/gems/ruby-2.4.1/gems/carrierwave-base64-2.5.3/lib/carrierwave/base64/adapter.rb:26:in `block in mount_base64_uploader' 
# /Users/fred/.rvm/gems/ruby-2.4.1/gems/factory_girl-4.8.0/lib/factory_girl/attribute_assigner.rb:16:in `public_send' 
# /Users/fred/.rvm/gems/ruby-2.4.1/gems/factory_girl-4.8.0/lib/factory_girl/attribute_assigner.rb:16:in `block (2 levels) in object' 
# /Users/fred/.rvm/gems/ruby-2.4.1/gems/factory_girl-4.8.0/lib/factory_girl/attribute_assigner.rb:15:in `each' 
# /Users/fred/.rvm/gems/ruby-2.4.1/gems/factory_girl-4.8.0/lib/factory_girl/attribute_assigner.rb:15:in `block in object' 
# /Users/fred/.rvm/gems/ruby-2.4.1/gems/factory_girl-4.8.0/lib/factory_girl/attribute_assigner.rb:14:in `tap' 
# /Users/fred/.rvm/gems/ruby-2.4.1/gems/factory_girl-4.8.0/lib/factory_girl/attribute_assigner.rb:14:in `object' 
# /Users/fred/.rvm/gems/ruby-2.4.1/gems/factory_girl-4.8.0/lib/factory_girl/evaluation.rb:12:in `object' 
# /Users/fred/.rvm/gems/ruby-2.4.1/gems/factory_girl-4.8.0/lib/factory_girl/strategy/create.rb:9:in `result' 
# /Users/fred/.rvm/gems/ruby-2.4.1/gems/factory_girl-4.8.0/lib/factory_girl/factory.rb:42:in `run' 
# /Users/fred/.rvm/gems/ruby-2.4.1/gems/factory_girl-4.8.0/lib/factory_girl/factory_runner.rb:29:in `block in run' 
# /Users/fred/.rvm/gems/ruby-2.4.1/gems/activesupport-5.1.2/lib/active_support/notifications.rb:168:in `instrument' 
# /Users/fred/.rvm/gems/ruby-2.4.1/gems/factory_girl-4.8.0/lib/factory_girl/factory_runner.rb:28:in `run' 
# /Users/fred/.rvm/gems/ruby-2.4.1/gems/factory_girl-4.8.0/lib/factory_girl/strategy/create.rb:5:in `association' 
# /Users/fred/.rvm/gems/ruby-2.4.1/gems/factory_girl-4.8.0/lib/factory_girl/evaluator.rb:33:in `association' 
# /Users/fred/.rvm/gems/ruby-2.4.1/gems/factory_girl-4.8.0/lib/factory_girl/attribute/association.rb:19:in `block in to_proc' 
# /Users/fred/.rvm/gems/ruby-2.4.1/gems/factory_girl-4.8.0/lib/factory_girl/evaluator.rb:77:in `instance_exec' 
# /Users/fred/.rvm/gems/ruby-2.4.1/gems/factory_girl-4.8.0/lib/factory_girl/evaluator.rb:77:in `block in define_attribute' 
# /Users/fred/.rvm/gems/ruby-2.4.1/gems/factory_girl-4.8.0/lib/factory_girl/attribute_assigner.rb:56:in `get' 
# /Users/fred/.rvm/gems/ruby-2.4.1/gems/factory_girl-4.8.0/lib/factory_girl/attribute_assigner.rb:16:in `block (2 levels) in object' 
# /Users/fred/.rvm/gems/ruby-2.4.1/gems/factory_girl-4.8.0/lib/factory_girl/attribute_assigner.rb:15:in `each' 
# /Users/fred/.rvm/gems/ruby-2.4.1/gems/factory_girl-4.8.0/lib/factory_girl/attribute_assigner.rb:15:in `block in object' 
# /Users/fred/.rvm/gems/ruby-2.4.1/gems/factory_girl-4.8.0/lib/factory_girl/attribute_assigner.rb:14:in `tap' 
# /Users/fred/.rvm/gems/ruby-2.4.1/gems/factory_girl-4.8.0/lib/factory_girl/attribute_assigner.rb:14:in `object' 
# /Users/fred/.rvm/gems/ruby-2.4.1/gems/factory_girl-4.8.0/lib/factory_girl/evaluation.rb:12:in `object' 
# /Users/fred/.rvm/gems/ruby-2.4.1/gems/factory_girl-4.8.0/lib/factory_girl/strategy/create.rb:9:in `result' 
# /Users/fred/.rvm/gems/ruby-2.4.1/gems/factory_girl-4.8.0/lib/factory_girl/factory.rb:42:in `run' 
# /Users/fred/.rvm/gems/ruby-2.4.1/gems/factory_girl-4.8.0/lib/factory_girl/factory_runner.rb:29:in `block in run' 
# /Users/fred/.rvm/gems/ruby-2.4.1/gems/activesupport-5.1.2/lib/active_support/notifications.rb:168:in `instrument' 
# /Users/fred/.rvm/gems/ruby-2.4.1/gems/factory_girl-4.8.0/lib/factory_girl/factory_runner.rb:28:in `run' 
# /Users/fred/.rvm/gems/ruby-2.4.1/gems/factory_girl-4.8.0/lib/factory_girl/strategy/create.rb:5:in `association' 
# /Users/fred/.rvm/gems/ruby-2.4.1/gems/factory_girl-4.8.0/lib/factory_girl/evaluator.rb:33:in `association' 
# /Users/fred/.rvm/gems/ruby-2.4.1/gems/factory_girl-4.8.0/lib/factory_girl/attribute/association.rb:19:in `block in to_proc' 
# /Users/fred/.rvm/gems/ruby-2.4.1/gems/factory_girl-4.8.0/lib/factory_girl/evaluator.rb:77:in `instance_exec' 
# /Users/fred/.rvm/gems/ruby-2.4.1/gems/factory_girl-4.8.0/lib/factory_girl/evaluator.rb:77:in `block in define_attribute' 
# /Users/fred/.rvm/gems/ruby-2.4.1/gems/factory_girl-4.8.0/lib/factory_girl/attribute_assigner.rb:56:in `get' 
# /Users/fred/.rvm/gems/ruby-2.4.1/gems/factory_girl-4.8.0/lib/factory_girl/attribute_assigner.rb:16:in `block (2 levels) in object' 
# /Users/fred/.rvm/gems/ruby-2.4.1/gems/factory_girl-4.8.0/lib/factory_girl/attribute_assigner.rb:15:in `each' 
# /Users/fred/.rvm/gems/ruby-2.4.1/gems/factory_girl-4.8.0/lib/factory_girl/attribute_assigner.rb:15:in `block in object' 
# /Users/fred/.rvm/gems/ruby-2.4.1/gems/factory_girl-4.8.0/lib/factory_girl/attribute_assigner.rb:14:in `tap' 
# /Users/fred/.rvm/gems/ruby-2.4.1/gems/factory_girl-4.8.0/lib/factory_girl/attribute_assigner.rb:14:in `object' 
# /Users/fred/.rvm/gems/ruby-2.4.1/gems/factory_girl-4.8.0/lib/factory_girl/evaluation.rb:12:in `object' 
# /Users/fred/.rvm/gems/ruby-2.4.1/gems/factory_girl-4.8.0/lib/factory_girl/strategy/create.rb:9:in `result' 
# /Users/fred/.rvm/gems/ruby-2.4.1/gems/factory_girl-4.8.0/lib/factory_girl/factory.rb:42:in `run' 
# /Users/fred/.rvm/gems/ruby-2.4.1/gems/factory_girl-4.8.0/lib/factory_girl/factory_runner.rb:29:in `block in run' 
# /Users/fred/.rvm/gems/ruby-2.4.1/gems/activesupport-5.1.2/lib/active_support/notifications.rb:168:in `instrument' 
# /Users/fred/.rvm/gems/ruby-2.4.1/gems/factory_girl-4.8.0/lib/factory_girl/factory_runner.rb:28:in `run' 
# /Users/fred/.rvm/gems/ruby-2.4.1/gems/factory_girl-4.8.0/lib/factory_girl/strategy/create.rb:5:in `association' 
# /Users/fred/.rvm/gems/ruby-2.4.1/gems/factory_girl-4.8.0/lib/factory_girl/evaluator.rb:33:in `association' 
# /Users/fred/.rvm/gems/ruby-2.4.1/gems/factory_girl-4.8.0/lib/factory_girl/attribute/association.rb:19:in `block in to_proc' 
# /Users/fred/.rvm/gems/ruby-2.4.1/gems/factory_girl-4.8.0/lib/factory_girl/evaluator.rb:77:in `instance_exec' 
# /Users/fred/.rvm/gems/ruby-2.4.1/gems/factory_girl-4.8.0/lib/factory_girl/evaluator.rb:77:in `block in define_attribute' 
# /Users/fred/.rvm/gems/ruby-2.4.1/gems/factory_girl-4.8.0/lib/factory_girl/attribute_assigner.rb:56:in `get' 
# /Users/fred/.rvm/gems/ruby-2.4.1/gems/factory_girl-4.8.0/lib/factory_girl/attribute_assigner.rb:16:in `block (2 levels) in object' 
# /Users/fred/.rvm/gems/ruby-2.4.1/gems/factory_girl-4.8.0/lib/factory_girl/attribute_assigner.rb:15:in `each' 
# /Users/fred/.rvm/gems/ruby-2.4.1/gems/factory_girl-4.8.0/lib/factory_girl/attribute_assigner.rb:15:in `block in object' 
# /Users/fred/.rvm/gems/ruby-2.4.1/gems/factory_girl-4.8.0/lib/factory_girl/attribute_assigner.rb:14:in `tap' 
# /Users/fred/.rvm/gems/ruby-2.4.1/gems/factory_girl-4.8.0/lib/factory_girl/attribute_assigner.rb:14:in `object' 
# /Users/fred/.rvm/gems/ruby-2.4.1/gems/factory_girl-4.8.0/lib/factory_girl/evaluation.rb:12:in `object' 
# /Users/fred/.rvm/gems/ruby-2.4.1/gems/factory_girl-4.8.0/lib/factory_girl/strategy/create.rb:9:in `result' 
# /Users/fred/.rvm/gems/ruby-2.4.1/gems/factory_girl-4.8.0/lib/factory_girl/factory.rb:42:in `run' 
# /Users/fred/.rvm/gems/ruby-2.4.1/gems/factory_girl-4.8.0/lib/factory_girl/factory_runner.rb:29:in `block in run' 
# /Users/fred/.rvm/gems/ruby-2.4.1/gems/activesupport-5.1.2/lib/active_support/notifications.rb:168:in `instrument' 
# /Users/fred/.rvm/gems/ruby-2.4.1/gems/factory_girl-4.8.0/lib/factory_girl/factory_runner.rb:28:in `run' 
# /Users/fred/.rvm/gems/ruby-2.4.1/gems/factory_girl-4.8.0/lib/factory_girl/strategy/create.rb:5:in `association' 
# /Users/fred/.rvm/gems/ruby-2.4.1/gems/factory_girl-4.8.0/lib/factory_girl/evaluator.rb:33:in `association' 
# /Users/fred/.rvm/gems/ruby-2.4.1/gems/factory_girl-4.8.0/lib/factory_girl/attribute/association.rb:19:in `block in to_proc' 
# /Users/fred/.rvm/gems/ruby-2.4.1/gems/factory_girl-4.8.0/lib/factory_girl/evaluator.rb:77:in `instance_exec' 
# /Users/fred/.rvm/gems/ruby-2.4.1/gems/factory_girl-4.8.0/lib/factory_girl/evaluator.rb:77:in `block in define_attribute' 
# /Users/fred/.rvm/gems/ruby-2.4.1/gems/factory_girl-4.8.0/lib/factory_girl/attribute_assigner.rb:56:in `get' 
# /Users/fred/.rvm/gems/ruby-2.4.1/gems/factory_girl-4.8.0/lib/factory_girl/attribute_assigner.rb:16:in `block (2 levels) in object' 
# /Users/fred/.rvm/gems/ruby-2.4.1/gems/factory_girl-4.8.0/lib/factory_girl/attribute_assigner.rb:15:in `each' 
# /Users/fred/.rvm/gems/ruby-2.4.1/gems/factory_girl-4.8.0/lib/factory_girl/attribute_assigner.rb:15:in `block in object' 
# /Users/fred/.rvm/gems/ruby-2.4.1/gems/factory_girl-4.8.0/lib/factory_girl/attribute_assigner.rb:14:in `tap' 
# /Users/fred/.rvm/gems/ruby-2.4.1/gems/factory_girl-4.8.0/lib/factory_girl/attribute_assigner.rb:14:in `object' 
# /Users/fred/.rvm/gems/ruby-2.4.1/gems/factory_girl-4.8.0/lib/factory_girl/evaluation.rb:12:in `object' 
# /Users/fred/.rvm/gems/ruby-2.4.1/gems/factory_girl-4.8.0/lib/factory_girl/strategy/create.rb:9:in `result' 
# /Users/fred/.rvm/gems/ruby-2.4.1/gems/factory_girl-4.8.0/lib/factory_girl/factory.rb:42:in `run' 
# /Users/fred/.rvm/gems/ruby-2.4.1/gems/factory_girl-4.8.0/lib/factory_girl/factory_runner.rb:29:in `block in run' 
# /Users/fred/.rvm/gems/ruby-2.4.1/gems/activesupport-5.1.2/lib/active_support/notifications.rb:168:in `instrument' 
# /Users/fred/.rvm/gems/ruby-2.4.1/gems/factory_girl-4.8.0/lib/factory_girl/factory_runner.rb:28:in `run' 
# /Users/fred/.rvm/gems/ruby-2.4.1/gems/factory_girl-4.8.0/lib/factory_girl/strategy_syntax_method_registrar.rb:20:in `block in define_singular_strategy_method' 

堆栈跟踪总是相同的。我无法在我的代码中明确地看到任何地方正在打开文件。

我最近实施DatabaseCleaner使用下列选项:

config.use_transactional_fixtures = false 
    config.before(:each) do 
    Sidekiq::Worker.clear_all 
    end 

    config.before(:suite) do 
    DatabaseCleaner.clean_with(:truncation) 
    RedisCache.new.flushdb 
    end 

    config.before(:each) do 
    DatabaseCleaner.strategy = :transaction 
    end 

    config.before(:each) do 
    DatabaseCleaner.start 
    end 

    config.after(:each) do 
    DatabaseCleaner.clean 
    end 

他们有这个问题,Carrierwave 0.5.8连接。

post为14 /三月/ 2012,因此可以肯定的是过时的

我可以证实,carrierwave直到0.5.7正常工作。只有0.5.8导致这个问题。今晚晚些时候我将在carrierwave上发布一个问题。

但是你有Carrierwave 0.11.2