Рельсы AJAX загрузки файлов и NGINX - PullRequest
2 голосов
/ 23 июня 2011

Я использую Rails и valums file-uploader для загрузки ajax.В разработке все работает без нареканий, однако в производстве на линоде nginx ломает вещи.Журнал ошибок:

[ pid=2097 thr=3065629552 file=ext/nginx/HelperAgent.cpp:584 time=2011-06-23 09:47:06.714 ]: Uncaught exception in PassengerServer client thread:    exception: An error occured while sending the request body to the request handler: Broken pipe (32)    backtrace:
     in 'virtual void Passenger::Session::sendBodyBlock(const char*, unsigned int)' (Session.h:198)
     in 'void Client::sendRequestBody(Passenger::SessionPtr&, Passenger::FileDescriptor&, const std::string&, long unsigned int)' (HelperAgent.cpp:295)
     in 'void Client::handleRequest(Passenger::FileDescriptor&)' (HelperAgent.cpp:510)
     in 'void Client::threadMain()' (HelperAgent.cpp:603)

2011/06/23 09:47:06 [error] 2134#0:
*13 sendfile() failed (32: Broken pipe) while sending request to upstream, client: 94.76.87.38, server:
69.168.213.69, re$

Загрузка работает нормально без JavaScript, с использованием направляющих 3 и скрепки.База данных - PostgreSQL.Я очень мало разбираюсь в серверных вещах и ищу помощь, как это исправить.Если вам нужна дополнительная информация, пожалуйста, оставьте комментарий.

1 Ответ

3 голосов
/ 07 июля 2011

Загрузка файлов работает через StringIO на webbrick, но Rack :: SOMETHING :: SOMETHING на всех, кроме webrick.Это изменение исправляет проблему:

-    file = request.body
+    file = StringIO.new(request.body.read)
...