RSpec和Machinist错误:打开的文件太多

时间:2022-04-06 04:04:35

This morning I am having the following error:

今天早上我遇到以下错误:

  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)>'

Specs are so damn slow (even with spork) so they are useless. It takes 9 minutes to run 20 examples in a model. Line 29 in blueprint.rb is between the following blocks:

规格太慢了(即使用spork),所以它们没用。在模型中运行20个示例需要9分钟。 blueprint.rb中的第29行位于以下块之间:

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

1 个解决方案

#1


11  

Too many open files is an OS error, meaning that the OS has run out of file handles. Linux usually has a hard limit on how many files can be open at the same time, and that limit has been reached.

打开的文件太多是操作系统错误,这意味着操作系统已用完文件句柄。 Linux通常对可以同时打开的文件数量有严格限制,并且已达到该限制。

To increase the limit temporarily, run ulimit -n 8192 first and then run the specs.

要临时增加限制,请先运行ulimit -n 8192,然后运行规范。

To increase the limit permanently, follow these instructions, and substitute nginx with the name of the user account that you're using to run the specs.

要永久性地增加限制,请按照这些说明操作,并将nginx替换为您用于运行规范的用户帐户的名称。

#1


11  

Too many open files is an OS error, meaning that the OS has run out of file handles. Linux usually has a hard limit on how many files can be open at the same time, and that limit has been reached.

打开的文件太多是操作系统错误,这意味着操作系统已用完文件句柄。 Linux通常对可以同时打开的文件数量有严格限制,并且已达到该限制。

To increase the limit temporarily, run ulimit -n 8192 first and then run the specs.

要临时增加限制,请先运行ulimit -n 8192,然后运行规范。

To increase the limit permanently, follow these instructions, and substitute nginx with the name of the user account that you're using to run the specs.

要永久性地增加限制,请按照这些说明操作,并将nginx替换为您用于运行规范的用户帐户的名称。