Sinatra应用程序(可能)两次调用数据库

时间:2014-03-25 08:47:51

标签: ruby activerecord sinatra rack

我遇到了一个相当奇怪的问题。我在其中一条路线上进行了以下测试:

error 404 unless Agreement.find_by(agreement_id: params[:agreement_id])

这是active record模型,我只使用提供的find_by方法。当我检查日志时,这是输出:

D, [2014-03-25T09:40:06.207120 #5956] DEBUG -- :   Agreement Load (0.1ms)  SELECT "agreements".* FROM "agreements" WHERE "agreements"."agreement_id" = '<id>' LIMIT 1
127.0.0.1 - - [25/Mar/2014:09:40:06 +0100] "HEAD /agreements/<id> HTTP/1.1" 204 0.0142
D, [2014-03-25T09:40:06.216059 #5956] DEBUG -- :   Agreement Load (0.2ms)  SELECT "agreements".* FROM "agreements" WHERE "agreements"."agreement_id" = '<id>' LIMIT 1

所以,在我看来,两件事之一正在发生:要么数据库被称为两次(差),要么只是被记录两次(但是,这并没有&#39 ; t似乎是这种情况,因为查询显然不是以相同的速度运行(0.1ms对0.2ms)。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

事实证明应用程序确实被调用了两次,但这是由于错误的中间件代码调用@app.call两次。