rake test:units で次のようなエラーが出てしばらく悩んだ。
/usr/local/lib/ruby/gems/1.8/gems/sqlite3-ruby-1.1.0/lib/sqlite3/errors.rb:94:in `check': SQL logic error or missing database (SQLite3::SQLException) from /usr/local/lib/ruby/gems/1.8/gems/sqlite3-ruby-1.1.0/lib/sqlite3/resultset.rb:76:in `check' from /usr/local/lib/ruby/gems/1.8/gems/sqlite3-ruby-1.1.0/lib/sqlite3/resultset.rb:68:in `commence' from /usr/local/lib/ruby/gems/1.8/gems/sqlite3-ruby-1.1.0/lib/sqlite3/resultset.rb:61:in `initialize' from /usr/local/lib/ruby/gems/1.8/gems/sqlite3-ruby-1.1.0/lib/sqlite3/statement.rb:158:in `execute' from /usr/local/lib/ruby/gems/1.8/gems/sqlite3-ruby-1.1.0/lib/sqlite3/database.rb:211:in `execute' from /usr/local/lib/ruby/gems/1.8/gems/sqlite3-ruby-1.1.0/lib/sqlite3/database.rb:186:in `prepare' from /usr/local/lib/ruby/gems/1.8/gems/sqlite3-ruby-1.1.0/lib/sqlite3/database.rb:210:in `execute' from /usr/local/lib/ruby/gems/1.8/gems/sqlite3-ruby-1.1.0/lib/sqlite3/database.rb:620:in `rollback' ... 13 levels... from /usr/local/lib/ruby/1.8/test/unit/autorunner.rb:200:in `run' from /usr/local/lib/ruby/1.8/test/unit/autorunner.rb:13:in `run' from /usr/local/lib/ruby/1.8/test/unit.rb:285 from /usr/local/lib/ruby/gems/1.8/gems/rake-0.7.1/lib/rake/rake_test_loader.rb:5
落ちついてコードをじっくり見ると、fixtures の引数に渡している名前を typo していただけだった。
ActiveRecord::Base.find で、:conditions に関連テーブルの条件を指定する 場合に :joins で結合していたが、このときでも :include で大丈夫なようだ。(考えてみたらそれはそうか)
http://www.fdiary.net/ml/rails/msg/869
で、:joins を :include に修正する途中で気づいたが、 ActiveRecord::Calculations の calculate は :include を使えないようだ。 なぜだろう。
http://api.rails2u.com/docs/activerecord/classes/ActiveRecord/Calculations/ClassMethods.html#M000329
Subversion において、削除したアイテムを復活させるには 削除直前のリビジョンを指定して svn copy するのがよい方法のようだ。
http://subversion.bluegate.org/doc/ch04s04.html#svn.branchmerge.commonuses.resurrect
普通に X と書くと参照できないので、self.class::X のようにする。
irb(main):001:0> module M irb(main):002:1> def f; p self.class::X; end irb(main):003:1> end => nil irb(main):004:0> class C irb(main):005:1> X = 'x' irb(main):006:1> include M irb(main):007:1> end => C irb(main):008:0> C.new.f "x" => nil
定数参照のルールはよく分かっていないなあ。
include が絡んだときの話ってリファレンスマニュアルにはないのだろうか。
http://shibuyajs.org/articles/2006/08/28/development-environment-conference
12時ちょうどにリロードをして参加申し込みをしました。
12:05にアクセスしてみたら、もう募集が締め切られていました。 やっぱり張り付いて正解だったか。