Приложение Ruby отвечает, пока стек не станет слишком глубоким - PullRequest
1 голос
/ 08 июля 2011

Я в растерянности здесь.У меня довольно простая вещь, но, похоже, у меня много проблем с этим.У меня есть прямой веб-сканер в работах.Люди публикуют запросы и отправляют их в очередь.Если они хотят запросить то, что находится в очереди: маршрут -

127.0.0.1: 8080 / запросы / id / 1.json

ответ - действие (def) CrawlerController является контроллером.запрос модели.

Вот маршрут: (хотя я не думаю, что это актуально)

  match 'requests/id/:id' => 'crawler#response'

А вот определение в контроллере:

  def response
    @request = Request.find(params[:id])
   respond_to do |format|
     #format.html { render :action => "new"}
     format.json { render :json => @request.to_json }
    end
  end

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

РЕДАКТИРОВАТЬ: строки 21 и 19 являются @respond to do и format.json

  CACHE (0.0ms)  SELECT "requests".* FROM "requests" WHERE "requests"."id" = 1 LIMIT 1
  CACHE (0.0ms)  SELECT "requests".* FROM "requests" WHERE "requests"."id" = 1 LIMIT 1
  CACHE (0.0ms)  SELECT "requests".* FROM "requests" WHERE "requests"."id" = 1 LIMIT 1
  CACHE (0.0ms)  SELECT "requests".* FROM "requests" WHERE "requests"."id" = 1 LIMIT 1
  CACHE (0.0ms)  SELECT "requests".* FROM "requests" WHERE "requests"."id" = 1 LIMIT 1
  CACHE (0.0ms)  SELECT "requests".* FROM "requests" WHERE "requests"."id" = 1 LIMIT 1
  CACHE (0.0ms)  SELECT "requests".* FROM "requests" WHERE "requests"."id" = 1 LIMIT 1
  CACHE (0.0ms)  SELECT "requests".* FROM "requests" WHERE "requests"."id" = 1 LIMIT 1
  CACHE (0.0ms)  SELECT "requests".* FROM "requests" WHERE "requests"."id" = 1 LIMIT 1
  CACHE (0.0ms)  SELECT "requests".* FROM "requests" WHERE "requests"."id" = 1 LIMIT 1
Completed 500 Internal Server Error in 2688ms

SystemStackError (stack level too deep):
  app/controllers/crawler_controller.rb:21:in `response'
  app/controllers/crawler_controller.rb:19:in `response'
  app/controllers/crawler_controller.rb:21:in `response'
  app/controllers/crawler_controller.rb:19:in `response'
  app/controllers/crawler_controller.rb:21:in `response'
  app/controllers/crawler_controller.rb:19:in `response'

довольно странно, да?

Ответы [ 2 ]

3 голосов
/ 08 июля 2011

Попробуйте переименовать ваш метод из response в другое.Я думаю, что response может использоваться Rails для чего-то другого.

1 голос
/ 08 июля 2011

Попробуйте переименовать вашу переменную из @request во что-то другое. Я думаю, что @request может быть использовано Rails для чего-то другого.

Также попробуйте переименовать ваше действие с response на другое. Я думаю, что response может быть использовано Rails для чего-то другого.

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