Я использую OmniAuth, чтобы пользователи могли входить в систему со своими учетными записями Google OpenID. Когда я пытаюсь войти в режиме разработки с помощью WEBrick, я получаю ошибку WEBrick::HTTPStatus::RequestURITooLarge. Когда я развертываю его на своем хосте rails, он работает нормально. Есть ли другой веб-сервер, который я должен использовать вместо WEBrick?
OmniAuth Google OpenID WEBrick::HTTPStatus::RequestURITooLarge
Ответы (5)
Странно, интересно, каков предел длины URI для WEBrick. Вы можете попробовать thin
http://code.macournoyer.com/thin/. Иногда я использую это локально для разработки, и, похоже, оно отлично работает.
Как упоминалось в railscast 236 для OmniAuth, у WEBrick есть проблемы с длинными URL-адресами, предоставляемыми OpenID. Решение, которое сработало для меня, состояло в том, чтобы добавить Mongrel в ваш gemfile.
гем 'дворняжка', '1.2.0.pre2'
Добавьте файл с именем webrick.rb
в каталог config\initializers
.
if defined?(WEBrick::HTTPRequest)
WEBrick::HTTPRequest.const_set("MAX_URI_LENGTH", 10240)
end
Ограничение размера URL уже изменено с 1024 до 2083 в последнем источнике ruby. Я надеюсь, что скоро выйдет обновленная версия ruby с этим исправлением :)
https://github.com/ruby/ruby/blob/trunk/lib/webrick/httprequest.rb#L291
Я столкнулся с той же проблемой с Caseproof's DataTables gem, используя Webbrick и таблицу, которая было много столбцов (> 15). Переход на тонкий сервер также решил мою проблему. DataTables — это подключаемый модуль javascript/jquery для создания таблиц.