Active Recordが不適当なキャッシュを返す(?)問題

ActiveRecordが誤ってキャッシュか何かを返している感じ。これで数時間嵌まった。

新規レコードをsave後、find_by_id(nil)すると、初回の呼び出しに限りsaveしたオブジェクトがマッチする。これは、仕様、じゃないよね。DB-Transactionとかも関係なさそうだし。誰かが報告済みかどうかは調べてないのであとで調べる。

$ pwd
/home/yugui/dev/rails/simple-crud

$ script/about
About your application's environment
Ruby version                 1.8.4 (i386-linux)
RubyGems version             0.8.11
Rails version                1.1.2
Active Record version        1.14.2
Action Pack version          1.12.1
Action Web Service version   1.1.2
Action Mailer version        1.2.1
Active Support version       1.3.1
Application root             /home/yugui/dev/rails/simple-crud
Environment                  development
Database adapter             mysql
Database schema version      1

$cat db/migrate/001-user-migration.rb
class UserMigration < ActiveRecord::Migration
  def self.up
    create_table(:users) {|table|
      table.column :name, :string, :length => 32
    }
  end

  def self.down
    drop_table :users
  end
end

$ script/console
Loading development environment.
>> User.create :name => 'example'
=> #<User:0x40bef1b4 @attributes={"name"=>"example", "id"=>2}, @new_record=false, \
 @errors=#<ActiveRecord::Errors:0x40b730c8 @base=#<User:0x40bef1b4 ...>, @errors={}>>
>> User.find_by_id(nil)
=> #<User:0x40b69c80 @attributes={"name"=>"example", "id"=>"2"}>
>> User.find_by_id(nil)
=> nil
>> User.find_by_id(nil)
=> nil
>>