Как в Синатре передать тело запроса другим классам? - PullRequest
2 голосов
/ 11 июля 2011

Я использую приложение Sinatra для получения запросов к серверу и хочу разделить их на отдельный класс, который я называю «запрос», но когда я передаю объект запроса, тело отбрасывается. Попытка прочитать request.body в основном классе работает, но попытка прочитать его в новом классе приводит к ошибке октета JSONparser.

В основном файле Sinatra этот тестовый вызов генерирует правильный ответ:

puts JSON.parse request.body.read

после того, как я передаю запрос в класс запросов с кодом ниже.

req=Request.new(request)

Но в определении инициализации класса Request, тот же код "put", приведенный выше, генерирует ошибку:

JSON::ParserError - A JSON text must at least contain two octets!:

Оба файла содержат требование JSON.

Обойти это довольно просто, но я бы предпочел более элегантное решение, если бы смог выяснить, почему оно не работает так, как я ожидал. Любые мысли приветствуются.

1 Ответ

0 голосов
/ 11 июля 2011

из моих тестов конструктор Request.new, похоже, не клонируется из объекта Request

request.clone работает должным образом

вам необходимо провести тщательную проверку объекта, если вам нужно что-то экстремальное

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...