Как я могу отладить запрос PUT в Rails 3.1? - PullRequest
2 голосов
/ 19 декабря 2011

Я занимаюсь разработкой простого приложения для iOS, которое использует приложение Rails в качестве серверного бэкэнда.Я использую фреймворк Restkit для управления сетью / запросами сервера, и на iOS все вроде бы нормально.

Когда я делаю PUT-запрос, я получаю ответ 200 назад и логив XCode вроде бы все хорошо.Когда я смотрю журналы для приложения Rails, мне кажется, что все хорошо, со следующим выводом:

2011-12-19T18:15:17+00:00 app[web.1]: Started PUT "/lists/3/tasks/6" for 109.156.183.65 at 2011-12-19 18:15:17 +0000
2011-12-19T18:15:17+00:00 app[web.1]:   Parameters: {"created_at"=>"2011-12-12 22:37:00 +0000", "id"=>"6", "updated_at"=>"2011-12-12 22:37:00 +0000", "description"=>"Create a home page", "list_id"=>"3", "completed"=>"1"}
2011-12-19T18:15:17+00:00 app[web.1]:   Task Load (4.3ms)  SELECT "tasks".* FROM "tasks" WHERE "tasks"."id" = $1 LIMIT 1  [["id", "6"]]
2011-12-19T18:15:17+00:00 app[web.1]:   Processing by TasksController#update as JSON
2011-12-19T18:15:17+00:00 app[web.1]:    (4.7ms)  BEGIN
2011-12-19T18:15:17+00:00 app[web.1]:    (1.5ms)  COMMIT
2011-12-19T18:15:17+00:00 app[web.1]: Completed 200 OK in 48ms (Views: 1.1ms | ActiveRecord: 16.0ms)
2011-12-19T18:15:17+00:00 heroku[nginx]: 109.156.183.65 - - [19/Dec/2011:10:15:17 -0800] "PUT /lists/3/tasks/6 HTTP/1.1" 200 154 "-" "TaskM8/1.0 CFNetwork/485.13.9 Darwin/11.2.0" taskm8.com
2011-12-19T18:15:17+00:00 heroku[router]: PUT taskm8.com/lists/3/tasks/6 dyno=web.1 queue=0 wait=0ms service=114ms status=200 bytes=154

Однако, когда я делаю другой запрос get или использую стандартные веб-представления дляпосмотрите на данные, изменение, которое я ожидал от запроса PUT (Completed = 1 - это поле BOOL), никаких изменений не было.

Я вижу из журнала rails, что мое приложение для iOSпередавая правильные параметры, так что, кажется, что-то на стороне рельсов.Я прошел через цикл преодоления сообщения об ошибке CSRF, так что не думайте, что это так.

В локальной версии приложения rails я также запустил общую регистрацию в базе данных MySql для мониторингазапросы выполняются, пытаясь увидеть, что PUT что-то делает вообще, или что-то, что не получится ... в журнале вы не видите ничего, кроме:

 BEGIN
 COMMIT

Так же, какжурнал рельсов.

Итак, кто-нибудь имеет представление о том, почему PUT не вносит изменения в данные или как я могу отлаживать PUT дальше?

Извинения, если это реальнопростой вопрос, я медленно возвращаюсь к разработке и немного заржавел!

Ответы [ 2 ]

0 голосов
/ 19 декабря 2011

Используете ли вы какие-либо автоматизированные тесты? Если нет, начните там.

Другим способом (хотя и мусором) было бы вызвать действие вашего контроллера с веб-страницы и посмотреть, работает ли оно.

Вы также можете добавить logger.debug в код вашего рельса, чтобы добавить следы.

0 голосов
/ 19 декабря 2011

Если у вас есть контроль над сервером MySQL, я бы посоветовал вам включить general lo g или журнал запросов, чтобы вы могли видеть, что на самом деле происходит.

SET GLOBAL general_log_file = '/tmp/query.log'
SET GLOBAL general_log = 'ON';
...