Запись MongoDB для массива займет вечность - PullRequest
0 голосов
/ 14 мая 2011

Я получаю информацию из базы данных (MongoDB) и затем преобразую ее в массив, подобный этому:

 @bs = coll.find("headers.from" => { "$regex" => email, "$options" => 'i' }, "date" => {"$gte" => initial_date, "$lte" => Time.now.utc})
      puts "a seguir ao fetch"


      puts @bs

      @bs = @bs.to_a

Это работает очень хорошо, но иногда, это просто входит в бесконечный цикл (я верю), потому что это приводит к сбою моего приложения heroku.

Ответ (первая строка - печать @bs):

2011-05-14T17:05:46+00:00 app[web.1]: DBResponse(flags=, cursor_id=, start=)

2011-05-14T17:06:16+00:00 heroku[router]: Error H12 (Request timeout) -> GET yapi.heroku.com/api/v1/69399ead0ed4ded38e7a101f7c8faf/2011-2-1.json dyno=web.1 queue=0 wait=0ms service=0ms bytes=0
2011-05-14T17:06:47+00:00 heroku[router]: Error H12 (Request timeout) -> GET yapi.heroku.com/favicon.ico dyno=web.1 queue=0 wait=0ms service=0ms bytes=0
2011-05-14T17:07:10+00:00 heroku[router]: Error H12 (Request timeout) -> GET yapi.heroku.com/api/v1/69399ead0ed4ded38e7a101f7c8faf/2011-2-1.json dyno=web.1 queue=0 wait=0ms service=0ms bytes=0
2011-05-14T17:07:17+00:00 heroku[router]: Error H12 (Request timeout) -> GET yapi.heroku.com/api/v1/69399ead0ed4ded38e7a101f7c8faf/2011-2-1.json dyno=web.1 queue=0 wait=0ms service=0ms bytes=0
2011-05-14T17:07:51+00:00 heroku[router]: Error H12 (Request timeout) -> GET yapi.heroku.com/api/v1/69399ead0ed4ded38e7a101f7c8faf/2011-2-1.json dyno=web.1 queue=0 wait=0ms service=0ms bytes=0

Я хотел бы знать почему, потому что я действительно не могу выяснить, почему со всей отладочной информацией. ОНА просто навсегда удерживает ".to_a", а сервер блокируется.

Пожалуйста, помогите.

Спасибо

1 Ответ

0 голосов
/ 14 мая 2011

Из того, что я вижу, у RoR нет причин прерывать этот цикл.

Если можете, попробуйте инициализировать его как Kernel # Array. Попробуйте это:

Array([1,2,3]) #=> [1, 2, 3]
Array(123) #=> [123]

Вместо:

arg = arg.to_a
...