Подтвердить что ты не робот

WEBrick:: HTTPStatus:: LengthRequired error при доступе к методу create в контроллере

У меня очень простой контроллер:

class LibrariesController < ApplicationController

...

  def create
    @user.libraries << Library.new(params)
    @user.save
    render :json => "success!"
  end

...

end

В принципе, всякий раз, когда я пытаюсь получить доступ к методу create LibrariesController с помощью HTTParty.post, я получаю ошибку WEBrick:: HTTPStatus:: LengthRequired на сервере. Этот метод даже не доступен! Вот трассировка стека (это полная сторона выходного сервера - обратите внимание, что контроллер даже не обращается к нему):

[2010-04-16 00:35:39] ERROR WEBrick::HTTPStatus::LengthRequired
[2010-04-16 00:35:39] ERROR HTTPRequest#fixup: WEBrick::HTTPStatus::LengthRequired occured.
[2010-04-16 00:35:39] ERROR NoMethodError: private method `gsub!' called for #<Class:0x2362160>
    /usr/local/Cellar/ruby_187/1.8.7-p249/lib/ruby/1.8/webrick/htmlutils.rb:17:in `escape'
    /usr/local/Cellar/ruby_187/1.8.7-p249/lib/ruby/1.8/webrick/httpresponse.rb:232:in `set_error'
    /usr/local/Cellar/ruby_187/1.8.7-p249/lib/ruby/1.8/webrick/httpserver.rb:70:in `run'
    /usr/local/Cellar/ruby_187/1.8.7-p249/lib/ruby/1.8/webrick/server.rb:173:in `start_thread'
    /usr/local/Cellar/ruby_187/1.8.7-p249/lib/ruby/1.8/webrick/server.rb:162:in `start'
    /usr/local/Cellar/ruby_187/1.8.7-p249/lib/ruby/1.8/webrick/server.rb:162:in `start_thread'
    /usr/local/Cellar/ruby_187/1.8.7-p249/lib/ruby/1.8/webrick/server.rb:95:in `start'
    /usr/local/Cellar/ruby_187/1.8.7-p249/lib/ruby/1.8/webrick/server.rb:92:in `each'
    /usr/local/Cellar/ruby_187/1.8.7-p249/lib/ruby/1.8/webrick/server.rb:92:in `start'
    /usr/local/Cellar/ruby_187/1.8.7-p249/lib/ruby/1.8/webrick/server.rb:23:in `start'
    /usr/local/Cellar/ruby_187/1.8.7-p249/lib/ruby/1.8/webrick/server.rb:82:in `start'
    /usr/local/Cellar/ruby_187/1.8.7-p249/lib/ruby/gems/1.8/gems/rack-1.0.1/lib/rack/handler/webrick.rb:14:in `run'
    /usr/local/Cellar/ruby_187/1.8.7-p249/lib/ruby/gems/1.8/gems/rails-2.3.5/lib/commands/server.rb:111
    /usr/local/Cellar/ruby_187/1.8.7-p249/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require'
    /usr/local/Cellar/ruby_187/1.8.7-p249/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `require'
    script/server:3

Я использую рельсы 2.3.5 и ruby ​​1.8.7. Любая помощь будет принята с благодарностью. Дайте мне знать, если вам нужна дополнительная информация.

4b9b3361

Ответ 1

Я получил это, когда сделал POST с пустым телом. Я использовал завиток.

Что-то вроде:

curl -X POST http://url/

Я добавил -d '', и это выяснило проблему.

curl -X POST http://url/ -d ''

В вашем случае вам, вероятно, нужно добавить некоторый контент в атрибут: body = > '' в HTTParty.post

Ответ 2

используйте :body вместо :query при отправке и отправке запросов.

Ответ 3

Я не знаю, насколько это актуально для Webrick или если оно исправлено, но есть ошибка для ошибки, которую вы получаете Читать строка 2 на этой странице TODO на RubyForge

Вы пробовали gem install mongrel и запускали его с mongrel или другим рубиновым сервером?

Ответ 4

У меня тоже была такая же проблема, только сейчас я ее решил. Со мной возникла проблема с новой строкой char в значении заголовка запроса. Как только сервер WEBrick получит браузер формы запроса или другой клиент, он отправит запрос в ваше приложение и сразу же вернет код 411 с помощью ERROR WEBrick::HTTPStatus::LengthRequired.

Итак, перед установкой значения заголовка вы можете удалить новую строку char, что и все.