使用Rails 5和Carrierwave上传大文件

时间:2018-02-24 18:02:40

标签: ruby-on-rails ruby ruby-on-rails-3 rubygems ruby-on-rails-5

我有一个HTML表单用于在Rails 5中上传视频文件。我正在使用Carrierwave标准生成的上传器。上传器,带有文件扩展名验证。当我尝试上传大型视频文件(2GB及更多)时,我收到此错误:

Puma caught this error: failed to allocate memory (NoMemoryError)

这是错误的完整痕迹:

Puma caught this error: failed to allocate memory (NoMemoryError)
C:/RailsInstaller/Ruby2.3.3/lib/ruby/gems/2.3.0/gems/rack-2.0.3/lib/rack/multipart/parser.rb:186:in `on_read'
C:/RailsInstaller/Ruby2.3.3/lib/ruby/gems/2.3.0/gems/rack-2.0.3/lib/rack/multipart/parser.rb:72:in `block in parse'
C:/RailsInstaller/Ruby2.3.3/lib/ruby/gems/2.3.0/gems/rack-2.0.3/lib/rack/multipart/parser.rb:70:in `loop'
C:/RailsInstaller/Ruby2.3.3/lib/ruby/gems/2.3.0/gems/rack-2.0.3/lib/rack/multipart/parser.rb:70:in `parse'
C:/RailsInstaller/Ruby2.3.3/lib/ruby/gems/2.3.0/gems/rack-2.0.3/lib/rack/multipart.rb:52:in `extract_multipart'
C:/RailsInstaller/Ruby2.3.3/lib/ruby/gems/2.3.0/gems/rack-2.0.3/lib/rack/request.rb:472:in `parse_multipart'
C:/RailsInstaller/Ruby2.3.3/lib/ruby/gems/2.3.0/gems/rack-2.0.3/lib/rack/request.rb:335:in `POST'
C:/RailsInstaller/Ruby2.3.3/lib/ruby/gems/2.3.0/gems/rack-2.0.3/lib/rack/method_override.rb:39:in `method_override_param'
C:/RailsInstaller/Ruby2.3.3/lib/ruby/gems/2.3.0/gems/rack-2.0.3/lib/rack/method_override.rb:27:in `method_override'
C:/RailsInstaller/Ruby2.3.3/lib/ruby/gems/2.3.0/gems/rack-2.0.3/lib/rack/method_override.rb:15:in `call'
C:/RailsInstaller/Ruby2.3.3/lib/ruby/gems/2.3.0/gems/rack-2.0.3/lib/rack/runtime.rb:22:in `call'
C:/RailsInstaller/Ruby2.3.3/lib/ruby/gems/2.3.0/gems/activesupport-5.1.4/lib/active_support/cache/strategy/local_cache_middleware.rb:27:in `call'
C:/RailsInstaller/Ruby2.3.3/lib/ruby/gems/2.3.0/gems/actionpack-5.1.4/lib/action_dispatch/middleware/executor.rb:12:in `call'
C:/RailsInstaller/Ruby2.3.3/lib/ruby/gems/2.3.0/gems/rack-livereload-0.3.16/lib/rack/livereload.rb:23:in `_call'
C:/RailsInstaller/Ruby2.3.3/lib/ruby/gems/2.3.0/gems/rack-livereload-0.3.16/lib/rack/livereload.rb:14:in `call'
C:/RailsInstaller/Ruby2.3.3/lib/ruby/gems/2.3.0/gems/actionpack-5.1.4/lib/action_dispatch/middleware/static.rb:125:in `call'
C:/RailsInstaller/Ruby2.3.3/lib/ruby/gems/2.3.0/gems/rack-2.0.3/lib/rack/sendfile.rb:111:in `call'
C:/RailsInstaller/Ruby2.3.3/lib/ruby/gems/2.3.0/gems/railties-5.1.4/lib/rails/engine.rb:522:in `call'
C:/RailsInstaller/Ruby2.3.3/lib/ruby/gems/2.3.0/gems/puma-3.10.0/lib/puma/configuration.rb:225:in `call'
C:/RailsInstaller/Ruby2.3.3/lib/ruby/gems/2.3.0/gems/puma-3.10.0/lib/puma/server.rb:605:in `handle_request'
C:/RailsInstaller/Ruby2.3.3/lib/ruby/gems/2.3.0/gems/puma-3.10.0/lib/puma/server.rb:437:in `process_client'
C:/RailsInstaller/Ruby2.3.3/lib/ruby/gems/2.3.0/gems/puma-3.10.0/lib/puma/server.rb:301:in `block in run'
C:/RailsInstaller/Ruby2.3.3/lib/ruby/gems/2.3.0/gems/puma-3.10.0/lib/puma/thread_pool.rb:120:in `block in spawn_thread'

我正在使用Windows 10。对于制作,我将切换到Linux,但现在我正在开发Windows。可能在Linux上我会得到同样的错误,我不知道。如何上传Carrierwave(甚至超过5GB)的大文件?

0 个答案:

没有答案