Приложение Rails регистрирует повторяющиеся запросы - PullRequest
8 голосов
/ 16 июля 2010

У меня есть приложение Rails, которое генерирует повторяющиеся запросы для каждого запроса в разработке. Приложение работает на Rails 2.3.5 с моей основной машиной разработки под управлением Ubuntu 10.4. Тем не менее, тот же код работает нормально, не показывая повторяющихся запросов на моем окне OS X 10.6. Он также работает в производственном режиме на любой машине без проблем.

  Processing DashboardController#index (for 127.0.0.1 at 2010-07-16 10:23:08) [GET]
  Parameters: {"action"=>"index", "controller"=>"dashboard"}
Rendering template within layouts/application
Rendering dashboard/index
  Term Load (1.9ms)   SELECT * FROM "date_ranges" WHERE ('2010-07-16' BETWEEN begin_date and end_date ) AND ( ("date_ranges"."type" = 'Term' ) ) 
  StaticData Load (1.1ms)   SELECT * FROM "static_data" WHERE ("static_data"."name" = E'SITE_NAME') LIMIT 1
  CACHE (0.0ms)   SELECT * FROM "static_data" WHERE ("static_data"."name" = E'SITE_NAME') LIMIT 1
Rendered dashboard/_news (0.1ms)
  CACHE (0.0ms)   SELECT * FROM "static_data" WHERE ("static_data"."name" = E'SITE_NAME') LIMIT 1
  CACHE (0.0ms)   SELECT * FROM "static_data" WHERE ("static_data"."name" = E'SITE_NAME') LIMIT 1
  StaticData Load (0.9ms)   SELECT * FROM "static_data" WHERE ("static_data"."name" = E'TAG_LINE') LIMIT 1
Completed in 67ms (View: 58, DB: 5) | 200 OK [http://localhost/dashboard]
  SQL (0.4ms)   SET client_min_messages TO 'panic'
  SQL (0.4ms)   SET client_min_messages TO 'notice'


Processing DashboardController#index (for 127.0.0.1 at 2010-07-16 10:23:08) [GET]
  Parameters: {"action"=>"index", "controller"=>"dashboard"}
Rendering template within layouts/application
Rendering dashboard/index
  Term Load (1.9ms)   SELECT * FROM "date_ranges" WHERE ('2010-07-16' BETWEEN begin_date and end_date ) AND ( ("date_ranges"."type" = 'Term' ) ) 
  StaticData Load (1.1ms)   SELECT * FROM "static_data" WHERE ("static_data"."name" = E'SITE_NAME') LIMIT 1
  CACHE (0.0ms)   SELECT * FROM "static_data" WHERE ("static_data"."name" = E'SITE_NAME') LIMIT 1
Rendered dashboard/_news (0.1ms)
  CACHE (0.0ms)   SELECT * FROM "static_data" WHERE ("static_data"."name" = E'SITE_NAME') LIMIT 1
  CACHE (0.0ms)   SELECT * FROM "static_data" WHERE ("static_data"."name" = E'SITE_NAME') LIMIT 1
  StaticData Load (0.9ms)   SELECT * FROM "static_data" WHERE ("static_data"."name" = E'TAG_LINE') LIMIT 1
Completed in 67ms (View: 58, DB: 5) | 200 OK [http://localhost/dashboard]
  SQL (0.4ms)   SET client_min_messages TO 'panic'
  SQL (0.4ms)   SET client_min_messages TO 'notice'

Обратите внимание, что запросы точно одинаковы, даже до отметок времени.

Я попытался использовать Ruby 1.8.7 и 1.9.1, а также обмен между Mongrel и Webrick, и он всегда обрабатывает каждый запрос дважды (или, по крайней мере, генерирует две записи в журнале). Я попытался удалить большинство маршрутов, чтобы увидеть, происходит ли что-то странное, но проблема сохраняется. Я пробовал разные браузеры (Chrome, Safari, eLinks) с разных машин, чтобы посмотреть, поможет ли это, но проблема остается. Я удалил все свои драгоценные камни и заменил только необходимые, но безрезультатно.

Кто-нибудь знает, почему Rails будет вызывать подобные запросы? Я почти сошел с ума и цепляюсь за соломинку. Единственная яркая искра состоит в том, что это поведение не происходит в производственной среде, только в разработке.

Ответы [ 8 ]

5 голосов
/ 31 мая 2011

Проверьте ваш код, посмотрите, есть ли что-то вроде этого внутри:

У меня такая же проблема, только сейчас из-за тега

<img src="#">

это приведет к дублированию рельсовзапросы!

5 голосов
/ 03 февраля 2015

Когда люди приходят на этот вопрос из Google, важно, чтобы они устраняли свою проблему между дублирующимися журналами, которые выглядят так:

A
A
B
B
C
C

Из дублирующих журналов, которые выглядят так:

A
B
C

A
B
C

Первый, скорее всего, из дубликата регистрации.Последнее вероятно из дубликатов ЗАПРОСОВ.В случае, если это последний вопрос, как показано в вопроснике (OP), вы должны строго рассмотреть ответ @ www о поиске <img src="#"> или аналогичного тега для самостоятельной ссылки.Я потратил часы, пытаясь выяснить, почему мое приложение делало два повторяющихся запроса, и после прочтения ответа @ www (или @ aelor на Двойной вывод консоли? ) я обнаружил

%link{href: "", rel: "shortcut icon"}/

в моем коде!Это вызывало двойную визуализацию каждой страницы моего производственного приложения !!!!Так плохо для производительности и так раздражает!

3 голосов
/ 17 октября 2015

Это происходило со мной в рельсах 4.2.3 после установки heroku rails_12factor драгоценного камня, который зависит от rails_stdout_logging

2 голосов
/ 01 марта 2013

Я решаю эту же проблему, очистив все предварительно скомпилированные ресурсы: rake assets:clean

Я пытался удалить папку приложения и затем вернуть его из GitHub, но не сработало.

надеюсь, это поможет. спасибо.

2 голосов
/ 05 августа 2012

Я решил эту проблему, прокомментировав следующую строку в app / config / environment / development.rb:

config.middleware.use Rails::Rack::LogTailer

Я точно не помню причину использования этого параметра

1 голос
/ 26 октября 2013

Это начало происходить со мной при разработке после игры с каким-то пользовательским промежуточным ПО, которое я написал. Запуск граблей активов: clean: все решено.

1 голос
/ 16 июля 2010

«Ответом» на проблему было перемещение в новый каталог и получение исходного кода с Github.После того, как все настроено и настроено в новом каталоге, приложение работает, как и должно, без повторяющихся запросов.Я до сих пор не знаю, почему код в исходном каталоге потерпел неудачу;Я даже просмотрел каталоги, и единственными выбросами были файлы журналов.

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

0 голосов
/ 19 сентября 2014

Этот небольшой обходной путь решил мою проблему.Выполните следующие действия:

В разделе "Внешние библиотеки Rails", модуль "Поиск Railties".Перейти по этому пути: /lib/commands/server.rb

В этом файле комментировать эту строку Rails.logger.extend (ActiveSupport :: Logger.broadcast (console))

Эта командаотключит трансляцию и просто перезапустит ваш сервер rails.Вы больше не увидите повторных логов.Удачного кодирования.

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