2010-07-16 3 views
8

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

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 вызовет повторяющиеся запросы? Я нахожусь на своем конце и хватаюсь за соломинку. Единственная яркая искра заключается в том, что такого поведения не происходит в среде производства, а только в разработке.

ответ

1

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

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

+0

Я испытываю это то же самое - с помощью Rails 2.8.6 на снежного барса. –

5

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

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

<img src="#"> 

это приведет к рельсам, чтобы сделать дубликаты запросов!

+0

ДА !!! Это был ответ для меня. Хвалите www! –

+0

Удивительные решения. Большое спасибо .. – akbarbin

2

Я решил эту проблему, комментируя следующую строку в приложение/Config/сред/development.rb:

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

Я не помню точно причину, чтобы использовать этот параметр

2

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

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

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

1

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

0

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

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

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

Эта команда переключит и просто перезапустите сервер рельсов. Вы больше не увидите повторных журналов. Счастливое кодирование.

5

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

A 
A 
B 
B 
C 
C 

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

A 
B 
C 

A 
B 
C 

Бывшие скорее всего, из дублирования LOGGING. Позднее, скорее всего, из двух повторных запросов. В последнем случае, как показано в вопросе Asker (OP), вы должны строго рассмотреть ответ @ www на поиск по <img src="#"> или аналогичный тег самореференциального URL-адреса. Я потратил часы, пытаясь выяснить, почему мое приложение отображалось сделать два дублирующих запросов, и после прочтения @ ответ WWW (или @ aelor на Double console output?), я нашел

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

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

+0

но почему пустые 'href' вызывают другие ссылки для двойного рендеринга? Или я чего-то не хватает? –

3

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