使用 Carrierwave 将大文件上传到 Rails 应用程序时出现内存分配错误

Memory Allocation Error when uploading large file to Rails app with Carrierwave

我查看了以下问题,但它没有给我的问题提供令人满意的解决方案:

getting my rails app to accept large files

我正在使用 Rails 4.2、Ruby 2.1 和 Mongodb 3.2、Carrierwave 0.10.0 和 Mongoid 5.0.2。我能够将相对较小的文件 (<20mb) 成功上传到数据库。但是当我尝试上传一个大文件(大约 500mb)时,我在控制台中收到以下错误:

Started GET "/invoice_collections/new" for ::1 at 2016-01-20 14:24:12 +0200 Processing by InvoiceCollectionsController#new as HTML Rendered invoice_collections/new.html.erb within layouts/application (28.0ms) Completed 200 OK in 129ms (Views: 128.0ms | ActiveRecord: 0.0ms) [2016-01-20 14:25:30] ERROR NoMemoryError: failed to allocate memory C:/RailsInstaller/Ruby2.1.0/lib/ruby/2.1.0/webrick/httprequest.rb:254:in 'block >in body' C:/RailsInstaller/Ruby2.1.0/lib/ruby/2.1.0/webrick/httprequest.rb:479:in 'call' C:/RailsInstaller/Ruby2.1.0/lib/ruby/2.1.0/webrick/httprequest.rb:479:in >`read_body' C:/RailsInstaller/Ruby2.1.0/lib/ruby/2.1.0/webrick/httprequest.rb:255:in 'body' C:/RailsInstaller/Ruby2.1.0/lib/ruby/gems/2.1.0/gems/rack-1.6.4/lib/rack/handler/webrick.rb:62:in 'service' C:/RailsInstaller/Ruby2.1.0/lib/ruby/2.1.0/webrick/httpserver.rb:138:in >'service' C:/RailsInstaller/Ruby2.1.0/lib/ruby/2.1.0/webrick/httpserver.rb:94:in 'run' C:/RailsInstaller/Ruby2.1.0/lib/ruby/2.1.0/webrick/server.rb:295:in 'block in >start_thread'

当我在控制台中看到这个时,我看到的是纯白色页面,而不是我应该看到的视图。

其中 RailsInstaller 是包含我的 Ruby 和 Rails 安装的地方。它是在这里下载的:

http://railsinstaller.org/en

我尝试这样做时尽量减少我电脑上的内存使用,但这没有帮助。我尝试重新安装 rails 和 ruby 但没有成功。我已经尝试 运行在云 9 ide 上而不是从我的机器上安装应用程序,它已经工作了,我的机器比云 9 ide 有更多的内存。然而,我需要使用我的机器进行测试的原因是我必须对上传的文件执行一些相当繁重的操作。

是什么导致我的机器出现此错误?我能做些什么来修复它?

更新: 我曾尝试 运行 在具有 32 GB RAM 的电脑上运行该应用程序。仍然给出完全相同的错误,所以我认为这与我的 PC 内存无关。

看来问题出在 webrick 上。我不确定到底是什么问题,但我使用 Thin 而不是 webrick 让它工作。