2
我有一個名爲large.zip(大約1GB)的大文件存儲在公用文件夾中。每當我試圖從本地主機(本地主機:3000/large.zip)下載它,我收到以下錯誤消息在公用文件夾中使用Rails在本地服務1GB文件
[2013-08-24 22:22:28] ERROR NoMemoryError: failed to allocate memory
E:/RubyStack/ruby/lib/ruby/gems/1.9.1/gems/rack-1.4.5/lib/rack/handler/w
ebrick.rb:72:in `block in service'
E:/RubyStack/ruby/lib/ruby/gems/1.9.1/gems/rack-1.4.5/lib/rack/file.rb:1
25:in `block in each'
E:/RubyStack/ruby/lib/ruby/gems/1.9.1/gems/rack-1.4.5/lib/rack/file.rb:1
17:in `open'
E:/RubyStack/ruby/lib/ruby/gems/1.9.1/gems/rack-1.4.5/lib/rack/file.rb:1
17:in `each'
E:/RubyStack/ruby/lib/ruby/gems/1.9.1/gems/rack-1.4.5/lib/rack/handler/w
ebrick.rb:71:in `service'
E:/RubyStack/ruby/lib/ruby/1.9.1/webrick/httpserver.rb:138:in `service'
E:/RubyStack/ruby/lib/ruby/1.9.1/webrick/httpserver.rb:94:in `run'
E:/RubyStack/ruby/lib/ruby/1.9.1/webrick/server.rb:191:in `block in star
t_thread'
下載停止在43619924個字節(約400MB)。我的電腦是8GB內存,我使用Ruby 1.9.3,rails 3.2.14和webbrick作爲web服務器。我認爲分配內存的大小有限制(400MB?)。那麼有沒有辦法增加這個限制?或者如何解決這個問題?
編輯:我只是創建一個使用rails新的rails應用程序然後我將large.zip文件複製到公用文件夾。然後我打開Chrome上的鏈接localhost:3000/large.zip來下載它(再次)。
您能否顯示下載鏈接的控制器代碼?可能你應該使用'send_file'方法,它將使用Web服務器的文件流,而不是將內容加載到Ruby進程。 –
我編輯了更多信息的問題。由於我以這種方式創建了應用程序,因此沒有用於下載鏈接的控制器代碼。 – v4r