rails:3833
From: dezawa <dezawa@a...>
Date: Tue, 02 Oct 2012 10:09:23 +0900
Subject: [rails:3833] Re: empty?を使っていないのに、undefined method `empty?'
出沢です ありがとうございます。存在をすっかり忘れて居ました。 これで追った所、 (2012年10月01日 19:38), dezawa wrote:> 出沢 @ Rails3移行勉強中 です > 「実は治っていないのだが、まだ発生する条件になっていない」 であることが判明しました。 DBアクセスが一定時間(default設定 0.5秒)を越えると実行される logger.warn(exec_explain(queries)) の exec_explain の中で 発生していました。 queriesの要素は [sql,[]] であって欲しいのに [sql,nil] に なっているものがあるようです。 だから時々発生していたわけです。 非力なCPU上のLinux上のVM上のLinuxで動かして居るので余計出やすい。 3.2.8でまだ出ないのは、3.2.0よりも3.2.8の方が高速化されたのかも。 queries = current[:available_queries_for_explain] = [] で 初期化された queries に どこで値が入るのかそれを探ります。 有難うございました。 # おかげでおもしろい手法を見つけました。 # # queries = current[:available_queries_for_explain] = [] # start = Time.now # result = yield # logger.warn(exec_explain(queries)) if Time.now - start > 。。。 # # これでなぜ queriesに値が入るのか? 初め ?? だったのですが、 # yield の中で current[:available_queries_for_explain] に << # しているのですね、多分。 # こういう副作用を伴うコードは書かない様に気をつけていたのですが # 意識的に使うことで、複雑な返り値にしないですみ、主な流れが簡明に # なる事もあるのだ。 #「早速使ってみたい所」が 2,3 思い浮かびました。 (2012年10月02日 00:28), Kazuhiro NISHIYAMA wrote: > 西山和広です。 > > At Sun, 30 Sep 2012 14:33:56 +0900, > dezawa wrote: >> ARの部分のトレースが出てくれればなぁとおもうのですが、 >> なにかおまじないがあるのでしょうか。 > > development 環境で実行しているのなら、エラー画面の > 「Framework Trace」や「Full Trace」をクリックすれば > 出てくると思うのですが、どうでしょうか。 > > -- ML: rails@r... 使い方: http://QuickML.com/
3828 2012-09-30 04:17 [dezawa@a... ] empty?を使っていないのに、undefined method `empty?' @ 3829 2012-09-30 04:40 ┣[netwillnet@g... ] 3830 2012-09-30 07:33 ┃┗[dezawa@a... ] 3832 2012-10-01 17:28 ┃ ┗[zn@m... ] -> 3833 2012-10-02 03:09 ┃ ┗[dezawa@a... ] 3834 2012-10-02 12:42 ┃ ┣[dezawa@a... ] 3835 2012-10-09 07:19 ┃ ┗[dezawa@a... ] 3831 2012-10-01 12:38 ┗[dezawa@a... ]