2010-07-16 171 views
8

我有一个Rails应用程序正在为开发中的每个请求生成重复请求。该应用程序在运行Ubuntu 10.4的主要开发机器上运行Rails 2.3.5。但是,相同的代码运行正常,没有在我的OS X 10.6框上显示重复的请求。它也可以在任何一台机器上以生产模式运行而不会出现问题Rails应用程序日志记录重复请求

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的雪豹。 – 2010-12-19 10:25:43

5

检查你的代码,看看有没有这样的事情里面:

我有同样的问题,刚才becase的标签

<img src="#"> 

的,这将导致轨道,使重复请求!

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

我不记得确切使用这个原因设置

+0

是的!!!这是我的答案。赞美www! – 2015-02-03 12:30:58

+0

令人惊叹的解决方案。非常感谢.. – akbarbin 2017-03-02 01:51:26

2

我的评论在app /配置/环境/ development.rb以下行解决这个问题通过清理所有预编译资产的问题: rake assets:clean

我试着删除应用程序文件夹,然后从GitHub检出他,但没有工作。

希望得到这个帮助。 谢谢。

2

我解决这个相同:

1

这个开始发生在我使用我写的一些自定义中间件玩过之后。 运行rake资产:clean:全部解决了。

0

这个小的解决方法解决了我的问题。请执行以下步骤:

在Rails外部库下,搜索railties模块。 转到这个路径:/lib/commands/server.rb

在这个文件中评论这条线, Rails.logger.extend(::的ActiveSupport Logger.broadcast(控制台))

这个命令将切换关闭广播,然后重新启动您的Rails服务器。您将不会再看到任何重复的日志。快乐的编码。

5

当人们从谷歌这个问题是很重要的,他们歧义看起来像这样的重复记录他们之间的问题:

A 
A 
B 
B 
C 
C 

从重复记录看起来像这样的:

A 
B 
C 

A 
B 
C 

前很可能来自重复的LOGGING。后者可能来自重复的请求。在提问者(OP)所示的情况下,后者应该强烈考虑@ www的回答,即寻找<img src="#">或类似的自引用url标记。我花了几个小时试图找出为什么我的申请出现,使两个重复的请求,并读@ WWW的回答(在Double console output?或@ aelor的)之后,我发现

%link{href: "", rel: "shortcut icon"}/ 
在我的代码

!这导致我的制作应用程序的每一页都是双渲染!表现糟糕,如此烦人!

+0

但为什么一个空白的'href'会导致其他链接双渲染?或者我错过了什么? – 2017-12-10 22:43:41

3

这是发生在我身上的导轨安装4.2.3 Heroku的rails_12factor宝石取决于rails_stdout_logging