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