2012-02-29 16 views
7

Esta mañana estoy teniendo el siguiente error:RSpec y maquinista de error: Demasiados archivos abiertos

14) Deal on creation sets frozen to false or nil 
    Failure/Error: Unable to find matching line from backtrace 
    Errno::EMFILE: 
     Too many open files - identify -format %wx%h '/var/folders/BJ/BJcTANEBFxWcan28U2YEKE+++TI/-Tmp-/stream20120229-36866-4l1sa8.gif[0]' 
    # ./spec/support/blueprints.rb:29:in `block in <top (required)>' 

Las especificaciones son tan condenadamente lento (incluso con spork) por lo que no sirven para nada. Lleva 9 minutos ejecutar 20 ejemplos en un modelo. Línea 29 en blueprint.rb está entre los siguientes bloques:

Company.blueprint do 
    name { "Office Tronic#{rand(10 ** 10)}" } 
    website { 'officetronic.com' } 
    subdomain {"officetronic#{rand(10 ** 10)}"} 
    facebook { 'officetronic' } 
    twitter { 'officetronic' } 
    description { 'We are a company dealing with electronics and office supply' } 
    address_line1 {'34 John Street'} 
    address_line2 {''} 
    post_code { 'EC2 3RR' } 
    phone { '01 343243434' } 
    city { 'London' } 
    your_name { 'john Doe' } 
    font_colour {'000000'} 
    logo_file_name { 'mylogo.png' } 
    logo_content_type { "application/png" } 
    logo_file_size { 100 } 
end 

Deal.blueprint do 
    company {Company.make!} 
    title { '50% off for web sites dev' } 
    description { '50% of discount...' } 
    quantity { 1 } 
    min_quantity { 0 } 
    start_time { Chronic.parse('one month') } 
    end_time { Chronic.parse('two months') } 
    price { 1500 } # in cents 
    shipping_cost{ 100 } # in cents 
    published { true } 
    small_print { 'Some text' } 
    show_map { true } 
    post_code { 'E1 6BJ' } 
    rrp {15} 
end 
+0

Me di cuenta de que este error ocurre al usar spork: rspec --drb spec/models/deal_spec.rb – rtacconi

Respuesta

10

Demasiados archivos abiertos es un error del sistema operativo, lo que significa que el sistema operativo se ha quedado sin identificadores de archivo. Linux generalmente tiene un límite estricto sobre cuántos archivos se pueden abrir al mismo tiempo, y ese límite se ha alcanzado.

Para aumentar el límite temporalmente, ejecute ulimit -n 8192 primero y luego ejecute las especificaciones. Para aumentar el límite permanentemente, follow these instructions, y sustituir nginx con el nombre de la cuenta de usuario que está utilizando para ejecutar las especificaciones.

Cuestiones relacionadas