Rails или Sinatra - Как я могу обработать неправильный HTTP-запрос?
У меня есть устройство 3G+GPS (Digi WR44), которое может отправлять пакеты NMEA на любой IP-адрес.
Я хотел бы получить эти данные из приложения Rails (или Sinatra), но пакеты не отправляются как действительный HTTP-запрос, и Rails и Sinatra завершаются ошибкой.
Вот ошибка Rails: ОШИБКА bad Request-Line
И ошибка Синатры:!! Неверный запрос
Кажется, я не могу настроить устройство для отправки действительных HTTP-запросов вместо простого содержимого. Знаете ли вы, есть ли способ обработки HTTP-запроса, состоящего из простого текста?
Я попытался с помощью сценария PHP, пакет NMEA был интерпретирован как request_method, но я хотел бы использовать ruby в этом проекте (с доступом к модели).
Большое спасибо за вашу помощь:)
PS: я использую последние версии Ruby, RoR и Sinatra
1 ответ
Я наконец нашел решение, которое заключается в создании сценария ruby, который прослушивает данный порт с помощью библиотеки Socket. Тривиальные, но полезные примеры доступны здесь: http://www.tutorialspoint.com/ruby/ruby_socket_programming.htm
Также легко получить доступ к activerecord в не-rails скрипте ruby: http://blog.aizatto.com/2007/05/21/activerecord-without-rails/