Ruby on rails Rails应用程序记录重复请求

Ruby on rails Rails应用程序记录重复请求,ruby-on-rails,Ruby On Rails,我有一个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"=>

我有一个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会导致这样的重复请求吗?我快不知所措了,正在抓救命稻草。唯一的亮点是,这种行为不会在生产环境下发生,只会在开发环境下发生。

问题的“答案”是移动到新目录并从Github获取原始代码。在新目录中完成所有配置和设置后,应用程序将正常工作,没有重复的请求。我仍然不知道为什么原始目录中的代码会死机;我甚至区分了目录,唯一的异常值是日志文件


我在这里回答我自己的问题是为了让可能遇到同样问题的其他人保持理智。

检查您的代码,看看里面是否有类似的内容:

我刚才也有同样的问题,因为一个标签

<img src="#">


这将导致rails发出重复请求

我通过评论app/config/environments/development.rb中的以下行解决了这个问题:

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

我不记得使用此设置的确切原因了

我在这里通过使用以下方法清理所有预编译资产来解决相同的问题:
rake资产:清理

我试图删除应用程序文件夹,然后从GitHub将其签出,但没有成功

希望这有帮助。
谢谢。

在使用了我编写的一些自定义中间件之后,这种情况在开发过程中开始发生。
运行rake资产:clean:all解决了这个问题。

这个小解决方案解决了我的问题。遵循以下步骤:

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

在该文件的注释行中, Rails.logger.extend(ActiveSupport::logger.broadcast(控制台))


此命令将关闭广播,然后重新启动rails服务器。您将不再看到任何重复的日志。愉快的编码。

当人们从谷歌那里遇到这个问题时,重要的是,他们要消除重复日志之间的歧义,这些重复日志如下所示:

A
A
B
B
C
C
A
B
C

A
B
C
从如下所示的重复日志:

A
A
B
B
C
C
A
B
C

A
B
C
前者可能来自重复日志记录。后者可能来自重复的请求。如果是AsKER(OP)所示的情况,则应该强烈地考虑@ WWW对<代码> >代码>或类似的自引用URL标签的搜索。我花了几个小时试图弄清楚为什么我的应用程序会出现两个重复的请求,在阅读了@www的答案(或@aelor's on)后,我发现


在我的代码里!这导致我的生产应用程序的每个页面都被双重渲染!!!!性能太差了,太烦人了

在安装了heroku rails\u 12factor gem之后,我在rails 4.2.3中遇到了这种情况,它依赖于rails\u stdout\u日志记录

我也经历了同样的事情-在snow leopard上使用rails 2.8.6。但是为什么空白的
href
会导致其他链接出现双重渲染?还是我遗漏了什么?