rails:3835
From: dezawa <dezawa@a...>
Date: Tue, 09 Oct 2012 14:19:33 +0900
Subject: [rails:3835] Re: empty?を使っていないのに、undefined method `empty?'
出沢です (2012年10月02日 10:09), dezawa wrote: > 出沢です > > ありがとうございます。存在をすっかり忘れて居ました。 > > これで追った所、 > (2012年10月01日 19:38), dezawa wrote:> 出沢 @ Rails3移行勉強中 です > > 「実は治っていないのだが、まだ発生する条件になっていない」 > > であることが判明しました。 と書きましたが、3.2.8 で治っていました。 私の行った3.2.8へのupgradeにどこかミスがあったようです。 3.2.0で当たりをつけたところが治っていなかったので、「治っていないのか」 という先入観があったようで、エラーがでてやっぱり、と思い込んでしまいま した。 # githubでレポートして、担当の方に余分な時間をかけさせてしまいました。 3.2.0のどういう問題が3.2.8で解決していたか整理しておきます 以下の条件が揃うと、active_record/explain.rb#exec_explain で undefined method `empty?'が発生する 1) こういうModelがある class Plan < ActiveRecord::Base belongs_to :product after_find do ; product ; end # これがポイント end 2) 存在しない Product#id を product_id に指定した Plan がある 3) その Planを含む多量のPlanを取得する 4) そのqueryが config.active_record.auto_explain_threshold_in_seconds = 以上の時間がかかる この値を 0.0 にすると必ず発生する(はずな)のですが、 くだんのPlanを一つ呼ぶだけ、 それを含む数個を呼ぶだけ、 Rails console では発生しません。 なお config.active_record.auto_explain_threshold_in_seconds が 無定義のときは exec_explain が呼ばれないので発生しません 定義されているのは標準では development のみです。 # 実appでは after_find で # product の内容に応じた moduleを Planインスタンスにextend しています。 -- 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... ]